I am a beginner in Android Development. Using android's default Navigation drawer activity I am developing an application. One of the requirements of this app is to change the background colors of layouts (including navigation drawer header color) randomly at run time.
Now everything is going fine except the color of the selected menu item on navigation drawer is still blue. like this :
Now what I want is as the background color of other layouts is pink the selected menu item on the navigation bar should also be pink (I mean the text color and the icon should be pink) like this :
Can anyone please tell how to achieve it programatically in code as I have to change selected text and icon colors at runtime randomly.
Here's the menu xml file for reference:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_quiz_all" android:icon="@drawable/ic_public_black_24dp" android:checked="true" android:title="All Countries Quiz"/> <item android:id="@+id/nav_quiz_bookmarked" android:icon="@drawable/ic_favorite_black_24dp" android:title="Favorite Quiz"/> </group> <item android:title="Communicate"> <menu> <item android:id="@+id/nav_rate" android:icon="@drawable/ic_star_black_24dp" android:title="Rate this app"/> <item android:id="@+id/nav_share" android:icon="@drawable/ic_share_black_24dp" android:title="Share"/> <item android:id="@+id/nav_feedback" android:icon="@drawable/ic_feedback_black_24dp" android:title="Feedback"/> <item android:id="@+id/nav_about" android:icon="@drawable/ic_info_black_24dp" android:title="About"/> </menu> </item> <item android:id="@+id/nav_settings" android:icon="@drawable/ic_settings_black_24dp" android:title="Settings"/> </menu>
First check for the NavigationView below
<android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" android:background="@color/white" app:itemIconTint="@drawable/drawer_item_color" app:itemTextColor="@drawable/drawer_item_color" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" />
Check here two things
app:itemIconTint="@drawable/drawer_item_color" app:itemTextColor="@drawable/drawer_item_color"
These both tags are using drawer_item_color.xml
which is a selector in drawable folder and below is the code for it
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/pink" android:state_checked="true" /> <item android:color="@color/black" /> </selector>
use selector and add colors you want. This will do the job for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With