如何对AppCompat r22.1的操作栏溢出图标进行着色?

3
我知道可以通过设置自定义的actionOverflowButtonStyle来替换图标,具体描述在这里。然而,该样式只允许设置不同的可绘制对象和/或背景。
相反,我想使用由AppCompat提供的标准图标,只需通过特定颜色进行着色,就像抽屉图标/返回按钮可以通过drawerArrowStyle中的color属性进行着色一样。
我尝试了以下方法,据说它们曾经有效: 但我发现,就我所知,它们都无法与最新的AppCompat一起使用--溢出图标保持其原始颜色(而其他小部件,如TextViews或菜单项中的文本可以更改)。
现在应该如何处理?我没有使用自定义的Toolbar视图,只是默认的AppCompat提供的类似ActionBar的视图。
如何重现:
  1. Create a default Android Studio project, with minimum SDK version = 9.
  2. This automatically includes a blank activity and a menu resource with a single menu item, "Settings", with app:showAsAction="never" which means it will be displayed in the overflow menu.
  3. Finally, customize the styles.xml file. For example:

    <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)。 - tachyonflux
@karaokyo 已完成,不过这很容易复现——一个默认的新 Android Studio 项目就足够了。 - matiash
哦,好的,所以是“DarkActionBar”强制使用白色覆盖层。不使用“DarkActionBar”? - tachyonflux
1个回答

2
如果你追踪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 - matiash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接