Ответ 1
Я ответил на аналогичный вопрос здесь.
В основном, что вам нужно, используйте Color State List Resource
. Для этого сначала создайте новый xml
(например, drawer_item.xml) внутри каталога color
(который должен находиться внутри каталога res
.) Если у вас еще нет каталога с именем color, создайте его.
Теперь внутри drawer_item.xml
сделайте что-то вроде этого
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="checked state color" android:state_checked= "true" />
<item android:color="your default color" />
</selector>
Для itemBackground
отдельная вытягиваемая часть также должна быть помещена внутри выпадающей папки. Имя такое же drawer_item
. android:drawable
свойство должно быть установлено вместо android:color
для itemBackground
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_rectangle_checked"
android:state_checked= "true" />
<item android:drawable="@drawable/shape_rectangle" />
</selector>
Файл shape_rectangle
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" /> <!--white color -->
</shape>
Файл shape_rectangle_checked
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#25aaf1" /> <!--blue color -->
</shape>
а затем установите в своем навигационном виде, как это
app:itemIconTint="@color/drawer_item" //notice here
app:itemTextColor="@color/drawer_item" //and here
app:itemBackground="@drawable/drawer_item"//and here for changing the background color of the item which is checked