NavigationView中禁用的项目未显示为灰色



添加时:

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:中定义的checkedunchecked颜色

<?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>

相关内容

  • 没有找到相关文章

最新更新