首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决android中EditText设置末尾省略号不生效的情况

解决android中EditText设置末尾省略号不生效的情况

作者头像
乱码三千
发布2021-07-29 15:55:24
2.4K0
发布2021-07-29 15:55:24
举报
文章被收录于专栏:乱码三千乱码三千乱码三千

在Textiew中可以通过设置TextView的属性

android:maxEms

android:ellipseize

来使过多的文字显示为省略号,但在在EditText中设置只这两个属性则不行

android默认只有在文字不可编辑的状态下才可以显示这些效果,但是EditText重写了这个属性,使得文字默认都是可以编辑的。

所以若想要呈现TextView的效果,必须加上以下属性

android:editable= "false"

另外EditText不支持跑马等的效果.咱们来看看android源码

override
public void setEllipsize(TextUtils.TruncateAt ellipsis) {
if (ellipsis == TextUtils.TruncateAt.MARQUEE) {
        throw new IllegalArgumentException("EditText cannot use the ellipsize mode TextUtils.TruncateAt.MARQUEE");  
}
super.setEllipsize(ellipsis);
}

如果设置跑马灯效果,会直接抛出异常

那么有同学会说了,editable设为false, 那岂不是没法进行文本编辑了?

这里呢, 建议大家自定义EditText并重写onTouchEvent方法,从外部进行控制是否获取焦点, 如下:

class FocusEditText(context: Context, attrs: AttributeSet) : EditText(context, attrs){
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        return isEnabled && super.onTouchEvent(event)
    }

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乱码三千 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档