如何在底部导航视图中选择带有渐变颜色的颜色图标



我有一些带有一些图标的底部导航视图,我希望当任何人选择图标时,图标的颜色更改为渐变颜色。

渐变.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>

底部导航视图

<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" />

选择器.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorPrimaryDark" 
      android:state_checked="true" />
    <item android:color="#c2bdbf" />
</selector>

将此属性添加到BottomNavigationView

app:itemIconTint="@drawable/bottom_selector"

创建一个名为 bottom_selector.xml 的可绘制对象

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

您需要一个可绘制选择器而不是颜色选择器来创建渐变背景。

可绘制/选择器.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/gradient" android:state_checked="true" />
</selector>

可绘制/渐变.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>

最后是你的观点

<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:itemBackground="@drawable/selector"
    app:labelVisibilityMode="unlabeled"
    app:menu="@menu/bottom_nav_menu" />

最新更新