ActionMode中ActionBar溢出菜单主题修改:actionBarPopupTheme与popupTheme无效
搞定ActionMode溢出菜单的浅色主题设置
嘿,我之前也踩过这个坑!你光改Widget.ActionMode的background肯定没用,因为ActionMode的溢出菜单本质是个PopupWindow,得单独给它指定样式才行。结合AppCompat框架,按下面的步骤来就能解决:
第一步:专门定义溢出菜单的Popup样式
在res/values/styles.xml里新增一个针对Popup的样式,直接指定白背景和黑文字:
<style name="ActionModeOverflowPopup" parent="@style/Widget.AppCompat.PopupMenu.Overflow"> <!-- 设置浅色背景 --> <item name="android:background">@android:color/white</item> <!-- 设置黑色文字 --> <item name="android:textColor">@android:color/black</item> <!-- 可选:调整分隔线样式 --> <item name="android:divider">@android:color/darker_gray</item> <item name="android:dividerHeight">1dp</item> </style>
第二步:把Popup样式关联到你的ActionMode样式里
修改你原来的Widget.ActionMode样式,加上popupTheme属性,指向刚才定义的Popup样式——这才是关键!
<style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> <!-- 你原来设置的ActionMode背景 --> <item name="background">@drawable/dummy</item> <!-- 核心配置:指定溢出菜单的主题 --> <item name="popupTheme">@style/ActionModeOverflowPopup</item> </style>
第三步:确保全局主题引用这个ActionMode样式
最后别忘了在你的App全局主题里,把自定义的ActionMode样式配置进去:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- 其他主题属性... --> <item name="actionModeStyle">@style/Widget.ActionMode</item> </style>
这样操作之后,ActionMode的溢出菜单就会变成你想要的黑字白背景的浅色主题了!之前我也以为改ActionMode的背景就能覆盖到菜单,结果发现完全不是一回事,必须单独给Popup指定主题才行。
内容的提问来源于stack exchange,提问作者Cheok Yan Cheng
相关产品推荐
相关产品推荐

