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
相关产品推荐
相关产品推荐

