如何解决BottomNavigationView - 为什么徽章 Drawable 没有足够的空间?
我使用材料库中的 BottomNavigationView
:const val material = "com.google.android.material:material:1.4.0-rc01"
并使用以下绑定在其上设置/更新徽章:
@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" />
我的问题是徽章似乎没有足够的空间:
选择项目时哪个更明显:
我试图解决这个问题,但无济于事:
- 改变图标的大小
- 设置
bottom_navigation_notification_padding
和来自 this answer 的其他一些属性 - 在材料中寻找一些信息 release notes
我找不到与我的问题相关的任何“已知问题”。我错过了什么?
解决方法
在 com.google.android.material:material v1.3.0 及更高版本中,您可以使用 setVerticalOffset
或 setHorizontalOffset
of BadgeDrawable
以特定量垂直或水平移动徽章像素。
设置将此徽章垂直移动到 其锚点的中心。
设置将这个徽章水平移动多少(以像素为单位) 其锚点的中心。
示例:
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
有和没有偏移的结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。