Android菜单ActionItem背景颜色设置未生效,如何修改?
解决菜单ActionItem背景颜色不符问题
优先通过主题全局覆盖PopupMenu样式
在res/values/styles.xml中定义自定义PopupMenu样式:<style name="CustomPopupMenuStyle" parent="@style/Widget.AppCompat.PopupMenu"> <item name="android:popupBackground">@color/tanlight</item> <item name="android:itemBackground">@color/tanlight</item> </style>然后在你的App主题中引用该样式,确保全局生效:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- 保留原有主题属性 --> <item name="popupMenuStyle">@style/CustomPopupMenuStyle</item> <item name="android:popupMenuStyle">@style/CustomPopupMenuStyle</item> </style>修正菜单XML中的冗余设置
你当前的menu XML里设置了多个重复背景属性,建议简化为仅在item中设置android:itemBackground(如果使用AppCompat库,改用app:itemBackground),同时移除根节点的android:background,因为菜单根节点的背景设置无效:<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" android:itemBackground="@color/tanlight"/> </menu>代码中单独指定PopupMenu样式(针对单个菜单)
如果全局主题修改无效,在创建PopupMenu的代码里手动指定样式:PopupMenu popupMenu = new PopupMenu(this, findViewById(R.id.your_action_button)); popupMenu.getMenuInflater().inflate(R.menu.your_menu, popupMenu.getMenu()); popupMenu.setPopupTheme(R.style.CustomPopupMenuStyle); // 应用自定义样式 popupMenu.show();检查颜色资源正确性
确认res/values/colors.xml中tanlight颜色定义正确,没有拼写错误:<color name="tanlight">#D2B48C</color> <!-- 示例棕褐色值,替换为你需要的颜色码 -->
内容的提问来源于stack exchange,提问作者Dan Anderson
相关产品推荐
相关产品推荐

