美文网首页高级UI
Android TextView内容过长省略属性

Android TextView内容过长省略属性

作者: 因为我的心 | 来源:发表于2019-11-19 13:12 被阅读0次

    一、前言:

    在我们显示TextView时,由于内容过长,无法完全显示,我们只能用省略号来代替,下面来介绍一下省略属性。

    Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下:

    1. 在xml中:

    android:ellipsize="end"     省略号在结尾
    android:ellipsize="start"   省略号在开头
    android:ellipsize="middle"   省略号在中间
    android:ellipsize="marquee"  跑马灯
    

    注意:最好加一个TextView显示行数的约束,例如:android:singleline="true"或者android:lines="1"

    2. 在Java中:

    tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
    tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
    tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
    tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
    

    注意:最好加一个TextView显示行数的约束,例如:tv.setSingleLine(true);
    不仅对于textview有此属性,对于editext也有,不过它不支持marquee。

    2. TextView 复制功能:

    在需要用到TextView的复制的功能的时候,我们只需要在xml文件中加一行代码就行:

    <TextView
         android:id="@+id/item_alertDetailInfo_tvSolveTime"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:textIsSelectable="true"/>
    

    设置textIsSelectable为true即可,但是这里有个巨坑,即便设置了这个属性,有时候还是会不能复制,于是百度良久发现如下答案答案

    原因如下:
    it works because the TextView has to layout again. You can trace the setText method to understand why. But layout a view is expansive. It’s an old bug of Android which google just don’t want to fix it.

    解决办法:修改TextView的宽度为wrap_content即可,真是个巨坑-。

    相关文章

      网友评论

        本文标题:Android TextView内容过长省略属性

        本文链接:https://www.haomeiwen.com/subject/abuwictx.html