自定义 AppCompat 主题未更改旧设备上的溢出图标
Custom AppCompat Theme not changing Overflow icon on older devices
最近我决定更改我应用程序上的 Action Overflow Icon
。我让它在 Lollipop 设备上运行,但它在我的 Ice Cream Sandwich 和 Kitkat 设备上不起作用。注意:在它不起作用的两个设备上,操作溢出图标有 3 个圆点,因此主题正在将其更改为 Material 版本....只是不是我的版本。
我的问题是我无法让它在旧设备上运行,但它在 Lollipop 上运行。
以前,我必须为每个版本创建单独的主题,但现在不需要了。只推荐一个主题。
代码
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<!--<item name="colorPrimaryLight">@color/primary_light</item>-->
<item name="colorAccent">@color/accent</item>
<item name="android:textColorPrimaryInverse">@color/primary_text_light</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<!--<item name="icons">@color/icons</item>-->
<item name="divider">@color/divider</item>
</style>
<style name="OverflowMenuButton" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:src">@drawable/ic_star_rate_white_18dp</item>
</style>
</resources>
正确的图标
图标不正确
您正在使用 android:actionOverflowButtonStyle
,这是替换框架溢出按钮的正确方法,仅适用于 Lollipop 及更高版本的设备。
但是,AppCompat 有自己的 actionOverflowButtonStyle attribute,适用于所有 API 7+ 设备 - 您应该使用它来代替 android:actionOverflowButtonStyle
:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="actionOverflowButtonStyle">@style/OverflowMenuButton</item>
...
</style>
最近我决定更改我应用程序上的 Action Overflow Icon
。我让它在 Lollipop 设备上运行,但它在我的 Ice Cream Sandwich 和 Kitkat 设备上不起作用。注意:在它不起作用的两个设备上,操作溢出图标有 3 个圆点,因此主题正在将其更改为 Material 版本....只是不是我的版本。
我的问题是我无法让它在旧设备上运行,但它在 Lollipop 上运行。
以前,我必须为每个版本创建单独的主题,但现在不需要了。只推荐一个主题。
代码
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<!--<item name="colorPrimaryLight">@color/primary_light</item>-->
<item name="colorAccent">@color/accent</item>
<item name="android:textColorPrimaryInverse">@color/primary_text_light</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<!--<item name="icons">@color/icons</item>-->
<item name="divider">@color/divider</item>
</style>
<style name="OverflowMenuButton" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:src">@drawable/ic_star_rate_white_18dp</item>
</style>
</resources>
正确的图标
图标不正确
您正在使用 android:actionOverflowButtonStyle
,这是替换框架溢出按钮的正确方法,仅适用于 Lollipop 及更高版本的设备。
但是,AppCompat 有自己的 actionOverflowButtonStyle attribute,适用于所有 API 7+ 设备 - 您应该使用它来代替 android:actionOverflowButtonStyle
:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="actionOverflowButtonStyle">@style/OverflowMenuButton</item>
...
</style>