Android: Bottom Navigation View - change icon of selected item Android: Bottom Navigation View - change icon of selected item android android

Android: Bottom Navigation View - change icon of selected item


You can simply create drawable selector in drawable folder and image can be change according to the state of the widget used in view

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/calender_green" android:state_checked="true"/>    <item android:drawable="@drawable/calender_black" android:state_checked="false"/></selector>


If above solutions are not working for you to change selected item icon then add below line to your code:

bottomNavigationView.setItemIconTintList(null);

This will disable tint effect of selected item icon.

I had the same problem. I have added selector drawable for changing icon of BottomNavigationView item when its checked/selected.


I found this is better approach to use selector drawable:

At first create an xml file in your drawable folder.For example, xml file name is child_selector.xml at drawable folder.

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/child" android:state_checked="false"/>    <item android:drawable="@drawable/child_fill" android:state_checked="true"/></selector>

Simply add child_selector in menu item of your bottom_navigation_main.xml:

Like: android:icon="@drawable/child_selector"

Example:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item    android:id="@+id/navigation_child"    android:icon="@drawable/child_selector"    android:title="@string/title_child" /></menu>

And must add following line in your activity-

bottomNavigationView.setItemIconTintList(null);

Good luck.