为啥这个 XML 代码不为 Android 4.3 中溢出菜单的背景着色?

Posted

技术标签:

【中文标题】为啥这个 XML 代码不为 Android 4.3 中溢出菜单的背景着色?【英文标题】:Why doesn't this XML code color the background of the overflow menu in Android 4.3?为什么这个 XML 代码不为 Android 4.3 中溢出菜单的背景着色? 【发布时间】:2014-10-10 23:52:04 【问题描述】:

我正在尝试为弹出菜单着色(单击溢出的三个垂直点时),但它不起作用:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:popupMenuStyle">@style/MyPopupMenu</item>

        <!-- None of these work either -->
        <item name="android:windowBackground">@color/white</item>
        <item name="android:popupBackground">@color/white</item>
        <item name="android:actionModeBackground">@color/white</item>
        <item name="android:dropDownListViewStyle">@style/MyPopupMenu</item>
        <item name="android:actionBarWidgetTheme">@style/MyPopupMenu</item>
    </style>

    <!-- Popup Menu Background Color styles -->

    <!--
        I also tried parent as:
              android:Widget.Holo.Light.ListPopupWindow
              @style/Widget.AppCompat.Light.ListPopupWindow
              @android:style/Widget.Holo.ListPopupWindow
    -->
    <style name="MyPopupMenu"
    parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
    </style>

</resources>

在我的 AndroidManifest.xml 中:

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

为什么它仍然以默认的黑色背景显示?

【问题讨论】:

其他版本也可以用吗? @waqaslam 它也不适用于 4.4 【参考方案1】:

确保您已根据版本应用样式...

值.xml 替换

<item name="android:popupMenuStyle">@style/MyPopupMenu</item>

to

<item name="popupMenuStyle">@style/MyPopupMenu</item>

values-14.xml

<item name="android:popupMenuStyle">@style/MyPopupMenu</item>

然后尝试一次...

【讨论】:

你的项目中 values 文件夹的结构是什么 values, values-land, values-sw600dp, values-v14 好的,那么你的 @style/MyPopupMenu 是正确的,在 values-v14 你是对的!我忘了更改values-v14/styles.xml 中的值!谢谢你!你能改变你的答案吗(确保在两个文件夹中设置样式),我会把它标记为正确的。 嗯,它不适用于平板电脑。如果我更改所有内容的背景,则菜单背景也会更改。否则,它不会改变菜单颜色!有什么想法吗?

以上是关于为啥这个 XML 代码不为 Android 4.3 中溢出菜单的背景着色?的主要内容,如果未能解决你的问题,请参考以下文章

XML drawable 在 4.3 和 4.1.2 上具有不同的行为

为啥使用 LayoutInflater 与 xml 不同?

为啥我的Android Studio里新建的drawable的XML文件里没找不到shape这个选项.

eclipse 中打开android的xml文件为啥没有视图显示

为啥使用 XML 创建 GUI 是 Android 中的一个好习惯

为啥大多数值在 Android xml 中是 8 的倍数?