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

时间:2018-09-20 06:09:22

标签: android android-theme android-styles android-menu android-vectordrawable

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

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

here

我希望文本和图标在深色主题上是最暗的黑色(#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,而无论我做什么,我都无法将其从默认的灰色更改。

2 个答案:

答案 0 :(得分:2)

在布局xml文件中,您具有NavigationView。要更改图标和文本的颜色,只需添加以下代码,

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

答案 1 :(得分:0)

对于菜单文本颜色,在您的主题文件中更改 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>