自定义AppCompat主题不更改旧设备上的溢出图标

时间:2015-08-20 01:12:24

标签: android icons android-theme android-menu

最近我决定更改我的应用中的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>

更正图标

enter image description here

图标不正确

enter image description here

1 个答案:

答案 0 :(得分:3)

您正在使用android:actionOverflowButtonStyle,这是替换框架溢出按钮的正确方法,仅适用于Lollipop和更高版本的设备。

但是,AppCompat有自己的actionOverflowButtonStyle attribute适用于所有API 7+设备 - 您应该使用它来代替<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="actionOverflowButtonStyle">@style/OverflowMenuButton</item> ... </style>

{{1}}