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

如何为BottomNavigationView选中的图标设置渐变色

实现BottomNavigationView选中图标渐变色方案

嘿,我来帮你搞定这个需求——让BottomNavigationView里被选中的图标变成渐变色。你已经写好了渐变的shape文件,只需要调整一下颜色选择器的配置就行,具体操作看下面:

1. 确认渐变Drawable(gradient.xml)

你已经创建了这个渐变形状文件,它就是咱们用来给选中图标着色的核心:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:type="linear" 
        android:startColor="#ee5f8a" 
        android:endColor="#ed8f6d" 
        android:angle="0"/>
</shape>

2. 修改颜色选择器(selector.xml)

原来的选择器用的是纯色,现在咱们要把选中状态的属性从android:color换成android:drawable,这样才能让渐变作为着色源生效:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 选中状态应用渐变Drawable -->
    <item android:drawable="@drawable/gradient" android:state_checked="true" />
    <!-- 未选中状态保持原有纯色 -->
    <item android:color="#c2bdbf" />
</selector>

划重点:这里必须把选中项的android:color改成android:drawable,不然渐变无法被识别为着色资源。

3. 保持BottomNavigationView布局不变

你的布局代码已经正确引用了这个选择器作为itemIconTint,所以不需要做任何修改:

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:layout_alignParentBottom="true" 
    android:background="?android:attr/windowBackground" 
    app:elevation="5dp" 
    app:itemIconSize="35dp" 
    app:itemIconTint="@color/selector" 
    app:labelVisibilityMode="unlabeled" 
    app:menu="@menu/bottom_nav_menu" />

小提示

别忘了检查你的bottom_nav_menu.xml里的每个menu item都设置了android:checkable="true",这样选中状态才能正常触发哦~如果你的图标是带透明通道的矢量图或PNG,渐变会完美贴合图标的形状;如果是纯色图标,选中时也会被渐变完全替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:35:43