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>
它会起作用
我在 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>
它会起作用