首页 > 解决方案 > Android 应用中的 Material Design 主题 - 菜单项图标未从主题继承

问题描述

如果这是一个愚蠢的问题,但谷歌和过去的 SO 问题没有帮助,我是 Android 开发的新手,很抱歉。

我想为我的应用程序使用深色主题,所以我将主题设置为:

<style name="AppTheme" parent="Theme.MaterialComponents">

我有一个工具栏,其中包含一个包含 2 个项目的菜单。菜单定义为:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.mycompany.myapp.MainActivity">

    <item
        android:id="@+id/action_contacts"
        android:icon="@drawable/ic_contacts_24"
        android:title="@string/action_contacts"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />
</menu>

我遇到的问题是,虽然工具栏正确使用了深色主题,但第一个菜单项 ( @+id/action_open_contacts) 将图标颜色设置为黑色,因此几乎看不到它。溢出菜单工作正常,并显示一个白色菜单图标。

为什么联系人图标不显示为白色?这不应该像菜单图标一样从应用程序的主题继承吗?

标签: androidxmlandroid-studiomaterial-designandroid-theme

解决方案


你可以用 .

将此文件添加到可绘制文件夹 - settings_icon.xml

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_contacts_24"
    android:tint="@color/colorBlack"/>

创建 colorBlack 或输入十六进制颜色,如#000000。

然后使用您的可绘制菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.mycompany.myapp.MainActivity">

    <item
        android:id="@+id/action_contacts"
        android:icon="@drawable/settings_icon"
        android:title="@string/action_contacts"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />
</menu>

我希望它对你有帮助!


推荐阅读