如何修改EditText长按弹出的复制粘贴菜单的文字颜色
你之前修改未生效的原因是EditText长按弹出的文本操作菜单属于ActionMode上下文菜单范畴,使用的是系统全局的弹出菜单文本外观属性,而非普通PopupMenu的样式配置,可通过以下方法修改:
方案1:修改全局弹出菜单文本外观(优先使用,适配绝大多数场景)
在你的应用基础主题中添加以下配置:
<style name="Base.AppTheme" parent="Theme.AppCompat.NoActionBar"> <!-- 适配高低版本的弹出菜单大/小文本样式 --> <item name="android:textAppearanceLargePopupMenu">@style/CustomPopupMenuText</item> <item name="textAppearanceLargePopupMenu">@style/CustomPopupMenuText</item> <item name="android:textAppearanceSmallPopupMenu">@style/CustomPopupMenuText</item> <item name="textAppearanceSmallPopupMenu">@style/CustomPopupMenuText</item> <!-- 可选:如果需要同时修改菜单背景,添加以下配置 --> <item name="android:actionModeStyle">@style/CustomActionMode</item> <item name="actionModeStyle">@style/CustomActionMode</item> </style>
然后添加对应的自定义样式:
<!-- 自定义弹出菜单文本样式 --> <style name="CustomPopupMenuText" parent="TextAppearance.AppCompat.Widget.PopupMenu.Large"> <item name="android:textColor">#000000</item> <!-- 修改为你需要的文字颜色 --> <item name="android:textSize">14sp</item> </style> <!-- 可选:自定义ActionMode样式,修改菜单背景 --> <style name="CustomActionMode" parent="Widget.AppCompat.ActionMode"> <item name="android:background">#f5f5f5</item> <!-- 菜单背景色 --> <item name="background">#f5f5f5</item> </style>
方案2:MaterialComponents主题适配
如果你的项目使用MaterialComponents主题,只需要把上述样式的父类替换为对应Material版本即可:
- 文本样式父类替换为
@style/TextAppearance.MaterialComponents.Widget.PopupMenu.Large - ActionMode样式父类替换为
@style/Widget.MaterialComponents.ActionMode
兜底方案
如果以上配置都不生效(少数定制ROM会修改系统默认样式),可以通过给EditText设置CustomSelectionActionModeCallback手动接管长按菜单的创建,自定义每个菜单项的样式和文字颜色。
内容的提问来源于stack exchange,提问作者holparb
相关产品推荐
相关产品推荐

