BottomNavigationView选中项颜色不变化问题原因咨询
嘿,我一眼就瞅出问题在哪了——你把菜单项的背景选择器用错属性啦!
你现在把@drawable/navbar这个选择器设置给了android:background,但这个属性管的是整个BottomNavigationView的整体背景,不是单个菜单项的背景。所以当你选中某个项时,其实是整个导航栏的背景在切换,但单个菜单项根本没用到你的选择器,自然看不到你想要的单项背景变化效果。
正确的调整方式:
- 你写的
drawable/navbar.xml选择器逻辑没问题,保留它就行——它能正确区分选中和未选中状态的背景色。 - 把这个选择器赋值给
app:itemBackground属性,这个属性才是专门控制单个菜单项背景的。 - 额外提一句:你当前设置的
itemIconTint和itemTextColor是固定颜色,建议也改成选择器,这样图标和文字颜色能跟着选中状态同步变化,体验会更统一。
修改后的布局代码:
<android.support.design.widget.BottomNavigationView ... android:background="@color/bottomBarSiva" <!-- 这里设置整个导航栏的基础背景 --> app:itemBackground="@drawable/navbar" <!-- 这里绑定单个菜单项的背景选择器 --> app:itemIconTint="@drawable/navbar_icon_tint" <!-- 用选择器控制图标颜色 --> app:itemTextColor="@drawable/navbar_text_tint" <!-- 用选择器控制文字颜色 --> ... />
补充:图标和文字的颜色选择器示例
比如创建drawable/navbar_icon_tint.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/NarandzastiTamniji" android:state_checked="true" /> <item android:color="@color/SvetloSiva" /> </selector>
文字颜色选择器drawable/navbar_text_tint.xml可以参照上面的结构,根据你的需求调整对应颜色即可。
这样修改后,你选中某个菜单项时,它的背景就会按照你写的选择器正常切换颜色啦!
内容的提问来源于stack exchange,提问作者iphkez
相关产品推荐
相关产品推荐

