Android 溢出按钮自定义图标不适用于 API < 5.0

Android Overflow Button custom icon not working for APIs < 5.0

我在 compat 主题中设置自定义溢出图标是这样的:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/status_bar</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:textColorPrimary">@color/theme_red</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@color/theme_red</item>
</style>

<style name="OverflowMenuButton" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_action_overflow</item>
</style>

</resources>

我在 Nexus 5 API 5.1 上得到了以下(期望且正确的)结果:

然而,当我在 API 4.4.4 或 4.2.2 上测试同一个应用程序时(在 Nexus 4、Xperia Z 等上测试),在这两种情况下,我都没有得到自定义溢出图标.这是屏幕截图:

我正在使用 appcompat 库 v7:21 中的工具栏,但我认为问题不是由工具栏引起的。我在这里做错了什么?

作为后续问题,我很乐意在保持相同形状的同时更改溢出图标的颜色。可能吗?如果是,如何?

根据之前的评论:您似乎忘记了将 actionOverflowButtonStyle 的非 Android 前缀版本添加到您的主题中。添加以下内容:

<item name="actionOverflowButtonStyle">@style/OverflowMenuButton</item>

首先你需要删除下面这行

<item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>

然后添加以下代码

<item name="actionOverflowButtonStyle">@style/OverflowMenuButton</item>

它会起作用