如何更改 BottomNavigationView 徽章背景的颜色?
How to change the color of BottomNavigationView badge background?
我已经根据这个例子实施了 BottomNavigationView
徽章计数
它工作正常,但我想更改徽章的背景颜色
有什么办法吗?
在 res/drawable 中根据导航项状态为您想要的颜色创建可绘制选择器。例如 bottom_navigation_colors.xml :
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:color="@color/white" />
<item
android:state_checked="false"
android:color="@color/blue" />
</selector>
然后你可以为你的 BottomNavigationView 创建一个样式 style
<style name="myBottomNavigationStyle">
<item name="android:background">#rrggbb</item>
<item name="itemIconTint">@drawable/bottom_navigation_colors</item>
<item name="itemTextColor">@drawable/bottom_navigation_colors</item>
</style>
并将其分配给 BottomNavigationView
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/ebottom_navigation_view"
style="@style/myBottomNavigationStyle"
.... />
这是我找到的解决方案,它按预期工作
val profileBadge = bottomNavigationView.getOrCreateBadge(R.id.profile)
profileBadge.number = profileCount
profileBadge.backgroundColor = ContextCompat.getColor(this@HomeActivity, R.color.green)
使用徽章的方法setBackgroundColor()
即可。
BadgeDrawable badge = bottomNavigationView.getOrCreateBadge(menuItemId);
badge.setNumber(..);
badge.setBackgroundColor(....);
如果您想 globally 在您的应用中更改样式,您可以在您的应用主题中定义 badgeStyle
attr :
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<item name="badgeStyle">@style/CustomBadge</item>
...
</style>
<style name="CustomBadge" parent="@style/Widget.MaterialComponents.Badge">
<item name="backgroundColor">@color/.....</item>
</style>
我已经根据这个例子实施了 BottomNavigationView
徽章计数
它工作正常,但我想更改徽章的背景颜色 有什么办法吗?
在 res/drawable 中根据导航项状态为您想要的颜色创建可绘制选择器。例如 bottom_navigation_colors.xml :
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:color="@color/white" />
<item
android:state_checked="false"
android:color="@color/blue" />
</selector>
然后你可以为你的 BottomNavigationView 创建一个样式 style
<style name="myBottomNavigationStyle">
<item name="android:background">#rrggbb</item>
<item name="itemIconTint">@drawable/bottom_navigation_colors</item>
<item name="itemTextColor">@drawable/bottom_navigation_colors</item>
</style>
并将其分配给 BottomNavigationView
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/ebottom_navigation_view"
style="@style/myBottomNavigationStyle"
.... />
这是我找到的解决方案,它按预期工作
val profileBadge = bottomNavigationView.getOrCreateBadge(R.id.profile)
profileBadge.number = profileCount
profileBadge.backgroundColor = ContextCompat.getColor(this@HomeActivity, R.color.green)
使用徽章的方法setBackgroundColor()
即可。
BadgeDrawable badge = bottomNavigationView.getOrCreateBadge(menuItemId);
badge.setNumber(..);
badge.setBackgroundColor(....);
如果您想 globally 在您的应用中更改样式,您可以在您的应用主题中定义 badgeStyle
attr :
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<item name="badgeStyle">@style/CustomBadge</item>
...
</style>
<style name="CustomBadge" parent="@style/Widget.MaterialComponents.Badge">
<item name="backgroundColor">@color/.....</item>
</style>