Android Popup Menu双层背景修复:保留圆角深色背景
修复方案
双层背景是因为你使用了AppCompat的PopupMenu样式作为父类,但主题基于Material Components,两者背景渲染机制冲突导致叠加。按以下步骤修改即可解决:
- 创建带圆角的Popup背景Drawable
在drawable目录下新建popup_menu_bg_dark.xml,定义带圆角的深色背景:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/dark"/> <corners android:radius="16dp"/> <!-- 可根据需求调整圆角大小 --> </shape>
- 更新PopupMenu样式
将popup_menu_dark的父类改为Material Components对应的样式,同时引用上述Drawable作为背景,并去除多余阴影:
<style name="popup_menu_dark" parent="Widget.MaterialComponents.PopupMenu"> <item name="android:popupBackground">@drawable/popup_menu_bg_dark</item> <item name="elevation">0dp</item> <item name="android:elevation">0dp</item> </style>
- 确保主题关联正确样式
在objectsmeasure_dark主题中,保留popupMenuStyle属性(兼容低版本可同时保留android:popupMenuStyle),确保指向修改后的样式即可。
修改完成后,PopupMenu将只显示一层带圆角的深色背景,解决双层叠加问题。
内容的提问来源于stack exchange,提问作者user19516326
相关产品推荐
相关产品推荐

