Android Options Menu上下白色条如何移除或修改颜色?
你需要补充以下几处配置即可消除上下白色条:
- 补全square_menu.xml的背景填充配置
你当前定义的shape只设置了圆角和padding,没有设置填充色,会导致popup容器默认透出底层白色背景,修改为如下代码:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 新增填充色,和item背景色保持一致 --> <solid android:color="@color/AraLightBlue"/> <corners android:radius="0dp"/> <padding android:top="0dp" android:bottom="0dp" /> </shape>
- 补充popupTheme的边距消除属性
在ThemeOverlay.MyTheme中新增以下配置,清除Popup默认的上下边距、阴影、分割线等自带样式:
<style name="ThemeOverlay.MyTheme" parent="ThemeOverlay.AppCompat.Light"> <item name="android:itemBackground">@color/AraLightBlue</item> <item name="android:popupBackground">@drawable/square_menu</item> <!-- 以下为新增配置 --> <item name="android:popupElevation">0dp</item> <item name="android:paddingVertical">0dp</item> <item name="android:divider">@null</item> <item name="android:listPreferredItemPaddingTop">0dp</item> <item name="android:listPreferredItemPaddingBottom">0dp</item> </style>
- 在App全局主题中配置Overflow菜单样式
多数情况下的白条问题都是因为遗漏了系统级的overflow菜单样式配置,需要在你应用的全局主题(比如Theme.MyApp对应的style)中新增如下配置:
<!-- 加到应用全局主题的item中 --> <item name="actionOverflowMenuStyle">@style/MyOverflowMenuStyle</item> <!-- 新增对应的style --> <style name="MyOverflowMenuStyle" parent="Widget.AppCompat.PopupMenu.Overflow"> <item name="android:popupBackground">@drawable/square_menu</item> <item name="android:paddingVertical">0dp</item> <item name="overlapAnchor">false</item> </style>
- 确认配置生效位置
检查app:popupTheme="@style/ThemeOverlay.MyTheme"是直接配置在Toolbar标签下,而非外层的父容器中。如果你使用的是MaterialComponents主题,把popupTheme的父主题改为ThemeOverlay.MaterialComponents.Light适配性更好。
内容的提问来源于stack exchange,提问作者tridiak
相关产品推荐
相关产品推荐

