Android中BottomNavigationView所有菜单项颜色一致问题求助
嘿,这个问题我之前也踩过坑!BottomNavigationView所有菜单项颜色没区别,核心原因是你没给它配置**状态选择器(Selector)**来区分「选中」和「未选中」的状态。下面给你一步步解决:
1. 创建颜色状态选择器
首先在res/drawable目录下新建一个颜色选择器文件,比如nav_item_color_selector.xml,用来定义不同状态下的颜色:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 菜单项选中时的颜色 --> <item android:color="#FFD700" android:state_checked="true" /> <!-- 菜单项未选中时的默认颜色 --> <item android:color="#888888" android:state_checked="false" /> </selector>
你可以把上面的颜色值换成你需要的配色。
2. 更新BottomNavigationView布局
回到你的布局代码,需要同时给图标和文字设置这个选择器(之前你只设置了图标,文字也得同步):
<android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="0dp" android:layout_marginStart="0dp" android:background="#291D1E" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:itemIconTint="@drawable/nav_item_color_selector" <!-- 图标颜色选择器 --> app:itemTextColor="@drawable/nav_item_color_selector" <!-- 文字颜色选择器 --> app:menu="@menu/your_bottom_nav_menu" /> <!-- 确保这里引用了你的menu文件 -->
注意把@menu/your_bottom_nav_menu换成你实际的menu文件名。
3. 确认Menu菜单项可勾选
打开你的menu文件(比如res/menu/bottom_nav_menu.xml),确保每个菜单项都加上android:checkable="true",这样才能触发选中状态:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_home" android:title="Home" android:checkable="true" /> <item android:id="@+id/nav_dashboard" android:icon="@drawable/ic_dashboard" android:title="Dashboard" android:checkable="true" /> <item android:id="@+id/nav_notifications" android:icon="@drawable/ic_notifications" android:title="Notifications" android:checkable="true" /> </menu>
4. (可选)设置默认选中项
如果希望打开页面时默认选中某个菜单项,可以在Activity里加一行代码:
BottomNavigationView navView = findViewById(R.id.navigation); navView.setSelectedItemId(R.id.nav_home); // 替换成你要默认选中的菜单项ID
这样操作后,BottomNavigationView的菜单项就能在选中和未选中状态下显示不同颜色啦!
内容的提问来源于stack exchange,提问作者user5508088
相关产品推荐
相关产品推荐

