如何为AppCompat r22.1操作栏溢出图标着色?

时间:2015-05-27 20:29:30

标签: android android-appcompat appcompat-v7-r22.1

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

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

我尝试过这些方法,据说这些方法曾经起作用:

但据我所知,它们都不适用于最新的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>
    
  4. 您会注意到这两个属性都不会影响溢出菜单图标颜色。使用Android 5.1.1在Nexus 5中测试。

1 个答案:

答案 0 :(得分: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。无论如何,您都可以使用材质属性轻松自定义操作栏。