You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android设置maxLines=4的多行EditText输入超4行数字点击崩溃问题

根因说明

该崩溃属于Android原生TextView/EditText的已知底层bug,触发条件为:控件设置了maxLines属性,且输入了无自动换行的超长连续字符(如连续数字、无空格的长英文串),点击控件触发光标定位逻辑时,系统对文本行的长度计算错误,最终抛出数组越界异常。

修复方案

可根据业务场景任选以下方案实现:

  • 方案1:设置简单换行策略
    在XML的EditText节点中新增属性即可,修改成本最低,适配90%以上的业务场景:
    android:breakStrategy="simple"
    
    如需代码动态设置,调用如下方法:
    et_NewComment.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
    
  • 方案2:修改输入类型配置
    在原有inputType属性后追加无联想标识,规避部分系统版本输入法联想逻辑导致的文本计算异常:
    android:inputType="textMultiLine|textNoSuggestions"
    
  • 方案3:兜底异常捕获
    如果需要兼容极端老旧系统版本,可自定义EditText重写触摸事件,捕获该类异常避免直接崩溃:
    public class CrashSafeEditText extends AppCompatEditText {
    
        public CrashSafeEditText(Context context) {
            super(context);
        }
    
        public CrashSafeEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CrashSafeEditText(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            try {
                return super.onTouchEvent(event);
            } catch (ArrayIndexOutOfBoundsException e) {
                // 捕获系统底层异常,避免崩溃
                return false;
            }
        }
    }
    
    之后将布局中声明的EditText替换为自定义的CrashSafeEditText即可。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 01:24:01