Search code examples
androidbottomnavigationview

Set active/inactive drawables for bottomavigationview


I am trying to put active/inactive drawables for bottomnavigationview menu items. Going through several post in SO and browsing in Google I could find only setting colour for active/inactive state using app:itembackgroundColor what I want to achieve is set drawable when selected.

I tried this for menuitems

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

where

home_navigation_view_home_selector/
home_navigation_view_oppurtunity_selector/
home_navigation_view_leads_selector/
home_navigation_view_settings_selector 

are selector for each item.

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>

the bottomnavigationview code is as follows

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

but doesn't seem to work.

Any help will be appreciated.


Solution

  • Try:

    navigation.setItemIconTintList(null);
    

    in your code.

    Bottom Navigation View uses color tinting by default, so you have to disable it.