为 bottomavigationview 设置 active/inactive 个可绘制对象

Set active/inactive drawables for bottomavigationview

我正在尝试为 bottomnavigationview 菜单项放置 active/inactive 可绘制对象。在 SO 中浏览几个 post 并在 Google 中浏览我只能找到使用 app:itembackgroundColor 为 active/inactive 状态设置颜色我想要实现的选中时设置为可绘制。

我为菜单项试过这个

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/home_navigation_view_home_selector"
        android:checked="false"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/home_navigation_view_oppurtunity_selector"
        android:checked="false"
        android:title="@string/title_oppurtunity" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/home_navigation_view_leads_selector"
        android:checked="false"
        android:title="@string/title_leads" />

    <item
        android:id="@+id/navigation_settings"
        android:icon="@drawable/home_navigation_view_settings_selector"
        android:checked="false"
        android:title="@string/title_settings" />

</menu>

哪里

home_navigation_view_home_selector/
home_navigation_view_oppurtunity_selector/
home_navigation_view_leads_selector/
home_navigation_view_settings_selector 

是每个项目的选择器。

home_navigation_view_home_selector.xml

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

bottomnavigationview代码如下

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="?android:attr/windowBackground"
    android:foreground="?attr/selectableItemBackground"
    app:menu="@menu/navigation" />

但似乎不起作用。

任何帮助将不胜感激。

尝试:

navigation.setItemIconTintList(null);

在您的代码中。

底部导航视图默认使用颜色着色,因此您必须禁用它。