【问题标题】:actionMenuTextColor not working when using ?/attr使用 ?/attr 时 actionMenuTextColor 不起作用
【发布时间】:2020-09-07 08:55:07
【问题描述】:

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

使用时:

<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

【问题讨论】:

  • 发布您的工具栏。
  • 有 ThemeOverlay.App.Toolbar 父级吗?
  • 不,它没有:
  • actionMenuTextColor 看起来像 colorApp4 吗?
  • ?attr/colorPrimary 为蓝色 colorApp4 为白色

标签: android android-toolbar android-theme android-styles


【解决方案1】:
<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 actionMenuTextColorToolbar 中使用colorApp4

如果您想更改默认颜色,只需应用:

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

【讨论】:

  • 这是正确的,但是如果我不覆盖actionMenuTextColor,那么我的菜单中的项目不是colorPrimary的颜色怎么办?
  • @user2230304 我应该检查样式以找到默认值。
  • 如果我使用 ?attr/colorPrimary 这不起作用,因为正如你所说,我重写了它。所以我发现的解决方法是使用 Toolbar.Surface 而不是 Toolbar.Primary 这样我保持我的 colorPrimary 不变: ?attr/colorApp4?attr/colorPrimaryVariant?attr/colorPrimary 这个有效
猜你喜欢
  • 2016-11-02
  • 2012-08-16
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多