添加时:
app:itemIconTint="@drawable/drawer_selector"
app:itemTextColor="@drawable/drawer_selector"
至:
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
然后所有项目都具有在drawer_selector.xml
:中定义的checked
和unchecked
颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#1F8674" android:state_checked="true" />
<item android:color="#323232" android:state_checked="false" />
</selector>
但当我禁用activity_main_drawer.xml
:中的1个项目时
<item
android:id="@+id/nav_local"
android:enabled="false"
android:icon="@drawable/ic_signal_cellular_0_bar_black_24dp"
android:title="@string/drawer_local" />
此项目不会变灰,但与可选项目的颜色相同。那么我可以手动将颜色设置回这种灰显状态吗?这似乎是材料设计中的一个错误?我尝试了这个主题的默认Android Studio项目:
<style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
以及最新的材料设计:
implementation 'com.google.android.material:material:1.4.0'
您可以通过将android:state_enabled
添加到已检查/未检查状态来使其更加具体。并为禁用项目创建一个单独的状态;听起来它的颜色是"#9E9E9E"
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#1F8674" android:state_checked="true" android:state_enabled="true" />
<item android:color="#323232" android:state_checked="false" android:state_enabled="true" />
<item android:color="#9E9E9E" android:state_enabled="false" />
</selector>