EditText选择模式选项文本显示不全问题:textAppearanceButton属性引发的冲突原因咨询
问题原因分析与解决方案
核心问题:错误的样式继承逻辑
你遇到的文本显示不全问题,根源出在ButtonAppearance的继承关系上——它错误地继承了主题样式(MyApp),但textAppearanceButton属性要求的是专门控制文本字体、大小、颜色的文本外观样式,而非完整的主题样式。
当你在全局主题中设置textAppearanceButton="@style/ButtonAppearance"后,所有依赖这个文本外观的控件(包括EditText选择模式下的Action Mode操作按钮)都会被迫继承主题中的布局相关属性(比如windowActionModeOverlay、actionModeBackground这类不属于文本外观的属性)。这种跨类型的属性继承会打乱Action Mode的正常布局逻辑,导致Action Mode工具栏高度异常,进而挤压EditText的文本显示区域,最终出现文本无法完全展示的问题。
修复方案
只需要修改ButtonAppearance的父类为官方提供的文本外观基类,让它专注于文本样式的设置即可:
<style name="ButtonAppearance" parent="TextAppearance.MaterialComponents.Button"> <item name="fontFamily">@font/iransans_bold</item> <item name="android:textSize">14sp</item> </style>
这样修改后,textAppearanceButton只会传递文本相关的样式属性给目标控件,不会带入主题的布局属性,Action Mode的布局就能恢复正常,EditText的文本也能完整显示,同时你也无需删除这个在全应用广泛使用的属性。
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

