Android Studio中如何修改onCreateOptionsMenu的顶部和底部颜色?
方法一:自定义溢出菜单样式
你的主题基于Theme.MaterialComponents.DayNight.DarkActionBar,弹出菜单顶部和底部的灰色是弹出容器的背景边缘,直接通过主题属性修改即可:
在AppTheme里添加actionOverflowMenuStyle属性,指定自定义样式:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- 保留你原来的所有属性 --> <!-- 添加自定义溢出菜单样式 --> <item name="actionOverflowMenuStyle">@style/CustomOverflowMenuStyle</item> </style> <!-- 自定义溢出菜单样式 --> <style name="CustomOverflowMenuStyle" parent="Widget.MaterialComponents.PopupMenu.Overflow"> <!-- 把弹出菜单背景设为你的蓝色(@color/background) --> <item name="android:popupBackground">@color/background</item> <!-- 要是需要圆角效果,就换成drawable背景,比如下面这个 --> <!-- <item name="android:popupBackground">@drawable/custom_menu_bg</item> --> </style>
如果需要圆角效果,新建res/drawable/custom_menu_bg.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/background"/> <corners android:radius="8dp"/> <!-- 圆角大小可自行调整 --> </shape>
方法二:修正colorSurface的应用
你已经设置了colorSurface,但可能未作用到弹出菜单上,补充以下属性尝试:
在AppTheme里添加:
<item name="popupMenuStyle">@style/CustomPopupMenuStyle</item>
对应的样式定义:
<style name="CustomPopupMenuStyle" parent="Widget.MaterialComponents.PopupMenu"> <item name="colorSurface">@color/background</item> </style>
方法三:兼容AppCompat场景
如果项目混用了AppCompat组件,使用这套属性配置:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- 原有属性保留 --> <item name="android:popupMenuStyle">@style/CustomAppCompatPopupMenu</item> </style> <style name="CustomAppCompatPopupMenu" parent="Widget.AppCompat.PopupMenu"> <item name="android:popupBackground">@color/background</item> </style>
注意事项
- 确认
@color/background确实是你需要的蓝色值,检查颜色文件定义是否正确。 - 修改完成后清理项目缓存(Build -> Clean Project)再重新运行,避免主题缓存导致修改不生效。
内容的提问来源于stack exchange,提问作者Gokul
相关产品推荐
相关产品推荐

