我遵循了以下答案:NavigationView theme selected item background style和这个答案:Android - Navigation View item menu background color
考虑此导航视图。它使用颜色状态列表color_state_menu
。
<android.support.design.widget.NavigationView
app:itemBackground="@color/color_state_menu"
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:menu="@menu/drawer_view">
此颜色状态列表定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/colorRoyalRed" />
<item android:drawable="@color/gray" />
</selector>
...以一种方式使当前使用的菜单项具有红色背景,而其他菜单项具有灰色背景。
但是,所有这些菜单项始终具有灰色背景。你知道为什么吗?
答案 0 :(得分:1)
您需要做几件事:
使用DrawableStateList
代替ColorStateList
-只需将color_state_menu.xml
移至drawable
文件夹并更改
app:itemBackground="@color/color_state_menu"
到
app:itemBackground="@drawable/color_state_menu"
使用android:state_checked
代替android:state_activated
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorRoyalRed" android:state_checked="true" />
<item android:drawable="@color/gray" />
</selector>
将android:checkable="true"
添加到drawer_view.xml