I have implemented BottomNavigationView
which is available from the new support library 25.0.0. Here is my code for that
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@drawable/text"
app:itemTextColor="@drawable/text"
app:menu="@menu/bottom_navigation_main" />
And text.xml
drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:state_enabled="true" />
<item android:color="@color/colorPrimaryDark" android:state_enabled="false" />
</selector>
With this code I am able to change text color when menu item is clicked, but when I apply same thing to app:itemBackground
it is showing error <item> tag requires a 'drawable' attribute or child tag defining a drawable
.
This is what I have tried for app:itemBackground
app:itemBackground="@drawable/text"
So my question is how can I change the background color of the selected menu item?
found an answer from this medium post
android:state_checked
instead of android:state_enabled
onNavigationItemSelected
you need to use return true
instead of return false
.and to set background, we cannot use android:color
in <item>
, we need to use android:drawable
So here how it looks xml file when you are setting it for app:itemTextColor
and app:itemIconTint
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorPrimaryDark" android:state_checked="true" />
<item android:color="@android:color/white" android:state_checked="false" />
</selector>
and to set app:itemBackground
selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/banner_white" android:state_checked="true"/>
<item android:drawable="@drawable/banner_green" android:state_checked="false"/>
</selector>
Here banner_white
and banner_green
are pngs.