如何修改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="@color/yellow" android:state_checked="true" /> <!-- 未选中状态用透明背景,可根据需求调整 --> <item android:drawable="@android:color/transparent" android:state_checked="false" /> </selector>
- 在
res/values/colors.xml中添加黄色的颜色定义:
<color name="yellow">#FFFF00</color>
- 修改你的
activity_main.xml,给BottomNavigationView加上app:itemBackground属性:
<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottomNavigationView" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:menu="@menu/bottom_nav" app:itemBackground="@drawable/bottom_nav_item_bg" <!-- 可选:如果需要修改选中/未选中的图标、文字颜色,可添加以下属性 --> app:itemIconTint="@color/bottom_nav_tint" app:itemTextColor="@color/bottom_nav_tint" > </com.google.android.material.bottomnavigation.BottomNavigationView>
- (可选)如果要修改图标和文字的颜色,创建
res/color/bottom_nav_tint.xml选择器:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@android:color/black" android:state_checked="true" /> <item android:color="@android:color/darkgray" android:state_checked="false" /> </selector>
方案二:全局主题配置(统一应用所有BottomNavigationView样式)
如果希望整个应用的BottomNavigationView都使用这个样式,可通过主题配置:
按照方案一的步骤创建好
bottom_nav_item_bg.xml和颜色定义。修改
res/values/styles.xml,添加自定义的BottomNavigation样式:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- 其他主题属性保持不变 --> <item name="bottomNavigationStyle">@style/CustomBottomNavStyle</item> </style> <style name="CustomBottomNavStyle" parent="Widget.MaterialComponents.BottomNavigationView"> <item name="itemBackground">@drawable/bottom_nav_item_bg</item> <!-- 可选:配置图标和文字颜色 --> <item name="itemIconTint">@color/bottom_nav_tint</item> <item name="itemTextColor">@color/bottom_nav_tint</item> </style>
- 确保你的Activity在
AndroidManifest.xml中使用该主题:
<activity android:name=".MainActivity" android:theme="@style/AppTheme"> <!-- 其他配置 --> </activity>
注意事项
- 确认你的项目已经引入了Material Design组件依赖,在
build.gradle(Module level)中:
implementation 'com.google.android.material:material:1.9.0' <!-- 版本可按需更新 -->
内容的提问来源于stack exchange,提问作者Atharva Kavale
相关产品推荐
相关产品推荐

