You need to enable JavaScript to run this app. Android 如何实现EditText失焦后单行超长内容末尾加省略号显示
优惠活动
大模型
产品
解决方案
定价
更多

Android 如何实现EditText失焦后单行超长内容末尾加省略号显示

Android EditText 失焦自动截断超长文本并显示省略号实现方案

1. 布局基础配置

首先在布局文件中给目标EditText设置基础属性,保证输入阶段可以滚动查看完整内容,不会提前截断:

<EditText
    android:id="@+id/et_target"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:scrollHorizontally="true"
    android:inputType="text"/>

2. 添加失焦监听逻辑

给EditText设置焦点变化监听,在失焦时启用截断效果,获得焦点时恢复可滚动状态:

Kotlin 示例代码

et_target.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
    if (!hasFocus) {
        // 失焦时启用末尾省略号截断
        et_target.ellipsize = TextUtils.TruncateAt.END
        et_target.setHorizontallyScrolling(false)
    } else {
        // 获得焦点时取消截断,支持滚动查看完整内容
        et_target.ellipsize = null
        et_target.setHorizontallyScrolling(true)
    }
}

Java 示例代码

EditText etTarget = findViewById(R.id.et_target);
etTarget.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            etTarget.setEllipsize(TextUtils.TruncateAt.END);
            etTarget.setHorizontallyScrolling(false);
        } else {
            etTarget.setEllipsize(null);
            etTarget.setHorizontallyScrolling(true);
        }
    }
});

注意事项

  • 该方案使用系统原生的截断能力,无需手动计算文本长度,可自动适配不同字体大小、屏幕密度、控件宽度的场景,适配性更高
  • 截断仅为显示效果,调用editText.getText().toString()依然可以获取完整的输入内容,不会修改实际存储的文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 01:36:03