BottomNavigationView - 为什么徽章 Drawable 不够 space?

BottomNavigationView - why is there not enough space for the badge Drawable?

我使用 material 库中的 BottomNavigationViewconst val material = "com.google.android.material:material:1.4.0-rc01"

和 set/update 使用以下绑定在其上的徽章:

@BindingAdapter("cartCount")
fun BottomNavigationView.updateCartCount(count: Int) {
    getOrCreateBadge(R.id.action_cart).apply {
        isVisible = count > 0
        if (isVisible) number = count
    }
}

这是 XML 中的视图(在 ConstraintLayout 中)

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav"
        cartCount="@{viewModel.cartCount}"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/white"
        app:elevation="8dp"
        app:itemIconTint="@color/bottom_nav_item_color"
        app:itemTextColor="@color/bottom_nav_item_color"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/menu_bottom_nav" />

我的问题是 space 徽章似乎不够用:

选择项目时哪个更明显:

我已尝试解决此问题,但无济于事:

我找不到与我的问题相关的任何“已知问题”。我错过了什么?

在com.google.android.material:material v1.3.0 及更高版本中,您可以使用 setVerticalOffsetsetHorizontalOffset of BadgeDrawable 来垂直或水平移动徽章以像素为单位的特定数量。

setVerticalOffset(int px)

Sets how much (in pixels) to vertically move this badge towards the center of its anchor.

setHorizontalOffset(int px)

Sets how much (in pixels) to horizontally move this badge towards the center of its anchor.

示例:

val menuItemId: Int = bottomNavigation.getMenu().getItem(1).getItemId()
val badge: BadgeDrawable = bottomNavigation.getOrCreateBadge(menuItemId)
badge.setVisible(true)
badge.setNumber(4)
badge.setVerticalOffset(10) //value in pix
badge.setHorizontalOffset(-10) //value in pix

有和没有偏移的结果: