【问题标题】:Overflow menu row customization溢出菜单行自定义
【发布时间】:2015-01-05 01:39:35
【问题描述】:

我想自定义操作栏中溢出菜单的行。我发现了一篇很棒的博客文章,解释了如何去做,看起来很简单。链接如下。 http://scriptedpapers.com/2014/08/12/android-action-bar-overflow-menu-customization/

我特别想更改溢出菜单行的背景颜色,以便我使用的主题如下所示:

<resources>

<!--the theme applied to the application or activity -->
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/CustomActionBar</item>
    <item name="android:homeAsUpIndicator">@drawable/upcaret</item>
    <item name="android:actionOverflowButtonStyle">@style/CustomOverflowButton</item>
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>

<!--ActionBar style -->
<style name="CustomActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/customBlue</item>
</style>
<style name="CustomOverflowButton" parent="@android:style/Widget.Holo.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/overflowbutton</item>
</style>
<style name="PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">@color/customBlue</item>
</style>

将此主题应用到应用程序后,溢出菜单的背景颜色与 Holo.Light.DarkActionBar 的默认颜色相同,尽管设置了自定义 popupMenuStyle。

对于我的项目,minSdkVersion 是 15,targetSdkVersion 是 19。

有人有什么想法吗?

谢谢。

【问题讨论】:

    标签: android android-actionbar overflow-menu


    【解决方案1】:

    尝试指定 9-patch 可绘制对象而不是颜色。

    转到here 并通过从“弹出颜色”下拉菜单中选择一种颜色来选择您希望行的颜色。

    您需要的唯一 zip 文件是 menu_dropdown_panel.9.png

    确保将此文件放在您的各种drawable-xxxx 文件夹中。

    然后像这样使用它:

    <style name="PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
        <item name="android:popupBackground">@drawable/menu_dropdown_panel</item>
    </style>
    

    如果还是不行,在上面加上这个:

    将此行添加到您的主主题 (CustomActionBarTheme):

    <item name="android:actionBarWidgetTheme">@style/PopupWrapper</item>
    

    然后添加这个:

    <style name="PopupWrapper" parent="@android:style/Theme.Holo">
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
    </style>
    

    【讨论】:

    • 感谢您的建议。我试过了,但它似乎仍然没有改变溢出菜单行背景。我完全被难住了..
    • 是的,在 标签中,我提供了属性 android:theme="@style/CustomActionBarTheme"。此外,我设置的其他样式自定义似乎正在工作,除了溢出菜单背景。
    • 暂时把父主题改成android:Theme.Holo.Light看看能不能用
    • 哇,成功了……非常感谢 JDJ。我想知道为什么使用 Theme.Holo.Light.DarkActionBar 会阻止更改背景颜色?
    • 很高兴它成功了!我认为它不起作用,因为深色主题为弹出菜单使用了额外的包装器。如果您仍然想使用 Theme.Holo.Light.DarkActionBar,您可能必须使用我添加到答案末尾的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多