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.