如何更改 android 中 menuItem 的背景颜色?

How to change Background color of menuItem in android?

我正在以编程方式将菜单项添加到菜单中。我想在选择特定项目时添加背景颜色。如何为 menuItem 添加背景?

您的回答将不胜感激。

首先,您需要根据需要为 popmenu 创建样式,请参考下面的示例

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

可绘制的地方你也可以根据需要用颜色替换或将XML可绘制到你的可绘制文件夹

<style name="commonEditTextTheme" parent="@android:style/TextAppearance.Medium">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

此弹出菜单主题添加到您的主应用程序或 activity 如下所示的主题

<!--My Theme-->
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    ......
    <item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item>
</style>

虽然其他答案提供了更改样式(这将影响 所有 菜单项,据我了解,需要更改一个菜单项),
我建议您使用 android:actionLayout 属性来实现菜单项的自定义布局。

参见documentation(在那里搜索actionLayout,其实很简单)。

此外,我认为有可能制作一个 selector 作为您的布局并使用它。


更新。对不起,我误导你了:(

所有这一切只有在 MenuItem 显示为 Action 时才有效(不是在按下三个点时)。

似乎给出其他答案的人是正确的 - 自定义它的唯一方法是更改​​主题。

但请检查 this and this - 它可能会帮助您提供适合您目的的选择器。
您也可以创建 PopupMenu or even PopupWindow,最后一个是完全可定制的。
最后一个选项是创建自定义 Spinner,勾选 this.

希望本文对您有所帮助。谢谢。