android - 更改 MaterialToolbar 菜单项图标颜色

android - Change MaterialToolbar menu items icon color

我目前正在创建一个应用程序,其中有一个 MaterialToolbar 小部件。我想将图标颜色设置为白色。 我尝试按照 中接受的答案进行操作,但是它不起作用。在 styles.xml 中添加 colorControlNormal 不起作用。

这是我的 MaterialToolbar xml 代码:

<com.google.android.material.appbar.MaterialToolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/topToolbar"
            android:background="@color/colorPrimaryDark"
            app:title="Revo"
            app:titleTextColor="@android:color/white"
            app:menu="@menu/menu_floatingsearchview"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

我能做什么?

编辑、解决方案和解释

感谢大家的精彩回答。我设法找到了一个解决方案,其中包括两个解决方案和另一个问题。

问题中,被问到为什么colorControlNormal不起作用。接受的答案说,在向量行中,您必须更改给定 android:fillColor 的值,并将其替换为 ?attr/colorControlNormal。执行此技巧,项 colorControlNormal,将控制所需的图标颜色。

在应用程序main样式中,您需要输入:

<item name="colorControlNormal">@android:color/white</item>

然后,在你想要的图标中,你需要在path下放置:

android:fillColor="?attr/colorControlNormal"

就是这样!现在图标将获得指定给 colorControlNormal 属性的颜色!

几天前那个问题让我很烦。 我最终这样做了:

  1. 将您想要的颜色设置为 colors.xml

    中的变量

    #ffffff

  2. 然后在drawable的source中直接设置这个颜色

    android:fillColor="@color/toolbarTextColor"

  3. 此外,在 MaterialToolbar 中设置文本颜色时使用相同的变量。

这样,您的图标总是与文本颜色相同,我想这正是您想要的。否则,只需使用另一个变量。

您可以使用:

    <com.google.android.material.appbar.MaterialToolbar
        app:menu="@menu/toolbar_menu"
        style="@style/Widget.MaterialComponents.Toolbar.Primary
        android:theme="@style/MyThemeOverlay_Toolbar"
        .../>

与:

<style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- color used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/....</item>
</style>