如何为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
相关产品推荐
相关产品推荐

