有没有办法改变菜单项图标和文本的颜色?

Is there a way to change the colors of the menu item icons and text?

我在导航抽屉上有这样的菜单项:

        ...
        <item
            android:id="@+id/nav_item_language"
            android:icon="@drawable/ic_language"
            android:title="@string/language" />
        <item
            android:id="@+id/nav_item_theme"
            android:icon="@drawable/ic_theme"
            android:title="@string/theme" />
    </group>
    <group
        android:id="@+id/nav_group_intents"
        android:checkableBehavior="none">
        <item
            android:id="@+id/nav_item_share"
            android:icon="@drawable/ic_share"
            android:title="@string/share" />
        <item
            android:id="@+id/nav_item_rate_app"
            android:icon="@drawable/ic_rate"
            android:title="@string/rate_app" />
        <item
            android:id="@+id/nav_item_contact_us"
            android:icon="@drawable/ic_contact_us"
            android:title="@string/contact_us" />
    </group>
</menu>

我希望文本和图标在深色主题上是最深的黑色 (#000000),在浅色主题上是最亮的白色 (#FFFFFF),但现在它们总是有些灰色。

我试过将其作为菜单项中的属性:

<item
    app:iconTint="@android:color/black"
    android:id="@+id/nav_item_language"
    android:icon="@drawable/ic_language"
    android:title="@string/language" />

并在样式中添加这些项目:

<style name="AppThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="android:itemTextAppearance">@android:color/black</item>
        <item name="android:actionMenuTextColor">@android:color/black</item>
    </style>

对于深色主题,我尝试了同样的方法,但 @android:color/white 而不是,无论我做什么,我都无法更改它们的默认灰色。

在您的布局 xml 文件中,您 NavigationView.To 更改图标和文本的颜色只需添加这些代码,

app:itemIconTint="#00xxxx"
app:itemTextColor="#00xxxx"

对于菜单文本颜色,在您的主题文件中更改 itemTextAppearance

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge" >
  ...
  <item name="android:itemTextAppearance">@style/menuItemColor</item>
</style>

在您的样式中创建 menuItemColor 样式

<style name="menuItemColor" parent="@android:style/TextAppearance.Widget.IconMenu.Item">
  <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>