You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何修改BottomNavigationView选中项的颜色与形状

解决BottomNavigationView选中项背景形状与自定义颜色的问题

要实现选中项背景改为圆角方形并自定义颜色,完全脱离主题控制,按以下步骤操作:

1. 创建自定义选中背景Drawable

在res/drawable目录下新建bottom_nav_selected_background.xml,通过selector定义选中/未选中状态的背景样式:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 选中状态:圆角方形 + 自定义背景色 -->
    <item android:state_checked="true">
        <shape android:shape="rectangle">
            <!-- 圆角大小可根据需求调整,示例为8dp -->
            <corners android:radius="8dp" />
            <!-- 替换为你需要的自定义颜色值 -->
            <solid android:color="#FFC0CB" />
        </shape>
    </item>
    <!-- 未选中状态:透明背景 -->
    <item android:state_checked="false">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>

2. 关联Drawable到BottomNavigationView

修改首页布局中的BottomNavigationView,添加app:itemBackground属性绑定刚才创建的背景样式:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottomNavigationView"
    android:layout_width="match_parent"
    android:layout_height="75dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    android:background="#E0E0E0"
    app:menu="@menu/menu_navbar"
    app:itemIconTint="#1B1B3A"
    app:itemTextColor="#1B1B3A"
    app:itemRippleColor="#91A7E8"
    <!-- 绑定自定义背景 -->
    app:itemBackground="@drawable/bottom_nav_selected_background" />

可选:自定义选中时的图标/文字颜色

如果需要单独设置选中状态的图标和文字颜色,可创建颜色selector文件res/color/bottom_nav_item_color.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#FFFFFF" android:state_checked="true" />
    <item android:color="#1B1B3A" android:state_checked="false" />
</selector>

然后替换布局中对应的颜色属性:

app:itemIconTint="@color/bottom_nav_item_color"
app:itemTextColor="@color/bottom_nav_item_color"

这种方式完全脱离系统主题的深度控制,所有样式都由你自定义的资源文件直接管理,精准控制选中项的形状和颜色。

内容的提问来源于stack exchange,提问作者phaynes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:00:01