如何去除BottomNavigationView选中状态样式或修改其颜色?
一、去除选中状态样式
要完全去掉点击后的选中样式,最直接的方式是自定义菜单项背景,让选中和未选中状态都保持透明:
- 在
res/drawable目录下创建bottom_nav_item_bg.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 选中状态设为透明 --> <item android:drawable="@android:color/transparent" android:state_selected="true"/> <!-- 未选中状态也设为透明 --> <item android:drawable="@android:color/transparent" android:state_selected="false"/> </selector>
- 在BottomNavigationView布局中添加属性:
app:itemBackground="@drawable/bottom_nav_item_bg"
二、修改选中状态颜色(比如改为蓝色)
如果不想去除选中样式,而是把默认的黑色改成蓝色,需要分别处理图标颜色和背景颜色:
1. 修改图标选中颜色
- 在
res/color目录下创建bottom_nav_icon_tint.xml颜色选择器:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/your_blue_color" android:state_selected="true"/> <!-- 替换成你需要的蓝色 --> <item android:color="@color/white" android:state_selected="false"/> <!-- 未选中时保持白色 --> </selector>
- 替换布局中原有的
app:itemIconTint属性:
app:itemIconTint="@color/bottom_nav_icon_tint"
2. 修改选中背景颜色(可选)
如果要把黑色背景改成蓝色,修改之前的bottom_nav_item_bg.xml即可:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/your_blue_bg_color" android:state_selected="true"/> <!-- 替换成你需要的蓝色背景 --> <item android:drawable="@android:color/transparent" android:state_selected="false"/> </selector>
同样给BottomNavigationView加上app:itemBackground="@drawable/bottom_nav_item_bg"属性。
最终修改后的布局示例
<com.google.android.material.bottomappbar.BottomAppBar android:id="@+id/bottomAppBar" android:layout_width="match_parent" android:layout_height="60dp" android:layout_gravity="bottom" style="@style/Widget.MaterialComponents.BottomAppBar.Colored"> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bnv" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" app:labelVisibilityMode="unlabeled" app:itemIconTint="@color/bottom_nav_icon_tint" app:itemBackground="@drawable/bottom_nav_item_bg" app:menu="@menu/bottom_menu"/> </com.google.android.material.bottomappbar.BottomAppBar>
内容的提问来源于stack exchange,提问作者D Com
相关产品推荐
相关产品推荐

