使用?/ attr时actionMenuTextColor不起作用

问题描述

我正在尝试更改工具栏中文菜单项的颜色

使用时:

<style name="Base.App" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="actionMenuTextColor">@color/blue</item>

它可以工作,但是在使用时:

<style name="Base.App" parent="Theme.MaterialComponents.Light.NoActionBar">
            <item name="actionMenuTextColor">?attr/colorPrimary</item>

不是。

有什么主意吗?

编辑1:

工具栏样式如下

<item name="toolbarStyle">@style/Widget.App.Toolbar</item>

<style name="Widget.App.Toolbar" parent="Widget.MaterialComponents.Toolbar.Primary">
        <item name="materialThemeOverlay">@style/ThemeOverlay.App.Toolbar</item>
        <item name="titleTextAppearance">@style/Widget.App.Toolbar.TitleTextAppearance</item>
    </style>

    <style name="Widget.App.Toolbar.TitleTextAppearance" parent="TextAppearance.App.Headline6">
        <item name="android:textStyle">bold</item>
    </style>

编辑2:

使用

<style name="Base.App" parent="Theme.MaterialComponents.Light.NoActionBar">
            <item name="actionMenuTextColor">?attr/colorPrimaryVariant</item>

实际上有效。但同样,不是colorPrimary

解决方法

<item name="actionMenuTextColor">?attr/colorPrimary</item>

它不使用colorPrimary,因为在Toolbar中您将colorPrimary替换为:

<style name="Widget.App.Toolbar" parent="Widget.MaterialComponents.Toolbar.Primary">
    <item name="materialThemeOverlay">@style/ThemeOverlay.App.Toolbar</item>      
</style>

<style name="ThemeOverlay.App.Toolbar" parent=""> 
    <item name="colorPrimary">?attr/colorApp4</item>  <!-- HERE -->
</style>

这意味着使用?attr/colorPrimary的{​​{1}}使用actionMenuTextColor中的colorApp4

如果要更改默认颜色,请应用:

Toolbar

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...