颜色状态列表 "event" 未触发或处理
Color state list "event" not triggered or handled
我遵循了这个答案: and this one:
考虑一下这个导航视图。它使用颜色状态列表 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>
...当前使用的菜单项背景为红色,其他菜单项背景为灰色。
但是,所有这些菜单项的背景总是灰色的。你知道为什么吗?
您需要做几件事:
使用 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>
在drawer_view.xml
中的每个菜单项中添加android:checkable="true"
我遵循了这个答案:
考虑一下这个导航视图。它使用颜色状态列表 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>
...当前使用的菜单项背景为红色,其他菜单项背景为灰色。
但是,所有这些菜单项的背景总是灰色的。你知道为什么吗?
您需要做几件事:
使用
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>
在
drawer_view.xml
中的每个菜单项中添加
android:checkable="true"