如何避免Android系统对Button按钮文本执行拼写检查?
该异常是Android Button(继承自TextView)默认开启拼写检查导致的,低版本系统对拼写检查的默认逻辑管控更松,所以出现概率更高,拼写检查会给识别到的疑似错误文本添加下划线标记,和你遇到的异常效果一致。android:spellCheck 属性最低支持Android 4.0(API level 14),已经覆盖当前市场所有活跃设备,无兼容性问题。
解决方案
全局样式统一配置(推荐)
你全局使用了该按钮样式,直接修改父样式一次即可全部生效,在Widget.App.Button.TextButton样式中添加关闭拼写检查的属性:
<style name="Widget.App.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton"> <item name="android:capitalize">none</item> <item name="iconPadding">@dimen/distance_100</item> <item name="android:textAppearance">@style/TextAppearance.App.14</item> <item name="strokeWidth">0dp</item> <!-- 新增以下两行关闭拼写检查与自动纠错 --> <item name="android:spellCheck">false</item> <item name="android:autoText">false</item> </style>
单个控件配置
如果仅需要调整个别按钮,直接在对应Button的XML标签中添加属性即可:
<Button android:id="@+id/previousButton" style="@style/Widget.App.Button.TextButton.Link" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/parental_leave_summary_back" app:icon="@drawable/ic_arrow_left_small" app:iconGravity="textStart" <!-- 新增属性 --> android:spellCheck="false" android:autoText="false" />
代码动态配置
如果需要在运行时动态控制,可通过代码设置:
Kotlin 示例
previousButton.spellCheck = false previousButton.autoText = false
Java 示例
previousButton.setSpellCheckEnabled(false); previousButton.setAutoTextEnabled(false);
内容的提问来源于stack exchange,提问作者m.reiter
相关产品推荐
相关产品推荐

