【问题标题】:How to tint AppCompat r22.1 action bar overflow icon?如何为 AppCompat r22.1 操作栏溢出图标着色?
【发布时间】:2015-08-10 03:12:37
【问题描述】:

我知道可以通过设置自定义actionOverflowButtonStyle替换图标,如here 所述。但是,该样式只允许设置不同的可绘制对象和或/背景。

相反,我想使用 AppCompat 提供的 标准 图标,只需将其着色为特定颜色,就像抽屉图标/后退按钮可以着色一样通过drawerArrowStyle 中的color 属性。

我已经尝试过这些方法,据报道它们曾经有效:

但据我所知,它们都不能与最新的 AppCompat 一起使用——溢出图标保持其原始颜色(而其他小部件,例如 TextViews 或菜单项中的文本 )。

现在应该以不同的方式进行吗?我没有使用自定义的Toolbar 视图,只是默认的AppCompat 提供的、类似ActionBar 的视图。


如何重现:

  1. 创建一个默认的 Android Studio 项目,最低 SDK 版本 = 9。
  2. 这会自动包含一个空白活动和一个带有单个菜单项“设置”的菜单资源,app:showAsAction="never" 表示它将显示在溢出菜单中。
  3. 最后,自定义styles.xml 文件。例如:

    <resources>
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorPrimary">#008888</item>
            <item name="colorControlNormal">#ff0000</item>
            <item name="android:textColorPrimary">#ff0000</item>
        </style>
    </resources>
    

您会注意到这两个属性都不会影响溢出菜单图标的颜色。在装有 Android 5.1.1 的 Nexus 5 中测试。

【问题讨论】:

  • mcve
  • @karaokyo 完成了,尽管它非常容易重现——一个默认的新 Android Studio 项目就足够了。
  • 哦,好的,这是DarkActionBar 强制白色覆盖。不要使用DarkActionBar

标签: android android-appcompat


【解决方案1】:

如果您跟踪 Theme.AppCompat.Light.DarkActionBar 主题,您会看到它设置:

<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>

它又继承自Base.ThemeOverlay.AppCompat.Dark,它设置:

<item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>

本质上等于白色:

<color name="primary_text_default_material_dark">#ffffffff</color>

如果你只是从Base.Theme.AppCompat.Light继承,你不会遇到这个问题,因为它没有设置actionBarTheme。无论如何,您都可以使用材质属性轻松自定义操作栏。

【讨论】:

  • 谢谢,我会调查一下——我曾尝试提供actionBarStyle,但没有提供actionBarTheme
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多