一、前言:
在我们显示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即可,真是个巨坑-。
网友评论