BottomNavigationView - 为什么徽章 Drawable 不够 space?
BottomNavigationView - why is there not enough space for the badge Drawable?
我使用 material 库中的 BottomNavigationView
:const 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 徽章似乎不够用:
选择项目时哪个更明显:
我已尝试解决此问题,但无济于事:
- 使用不同的 material 版本,尝试不同的版本(从 1.3.0 开始)
- 增加
BottomNavigationView
的高度,这里我把它设置成荒谬的100dp:
- 更改图标的大小
- 设置
bottom_navigation_notification_padding
和 中的一些其他属性
- 在 material release notes
中寻找一些信息
我找不到与我的问题相关的任何“已知问题”。我错过了什么?
在com.google.android.material:material v1.3.0 及更高版本中,您可以使用 setVerticalOffset
或 setHorizontalOffset
of BadgeDrawable
来垂直或水平移动徽章以像素为单位的特定数量。
Sets how much (in pixels) to vertically move this badge towards the
center of its anchor.
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
有和没有偏移的结果:
我使用 material 库中的 BottomNavigationView
:const 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 徽章似乎不够用:
选择项目时哪个更明显:
我已尝试解决此问题,但无济于事:
- 使用不同的 material 版本,尝试不同的版本(从 1.3.0 开始)
- 增加
BottomNavigationView
的高度,这里我把它设置成荒谬的100dp:
- 更改图标的大小
- 设置
bottom_navigation_notification_padding
和 中的一些其他属性
- 在 material release notes 中寻找一些信息
我找不到与我的问题相关的任何“已知问题”。我错过了什么?
在com.google.android.material:material v1.3.0 及更高版本中,您可以使用 setVerticalOffset
或 setHorizontalOffset
of BadgeDrawable
来垂直或水平移动徽章以像素为单位的特定数量。
Sets how much (in pixels) to vertically move this badge towards the center of its anchor.
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
有和没有偏移的结果: