高级UI

Android TextView内容过长省略属性

2019-11-19  本文已影响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即可,真是个巨坑-。

上一篇下一篇

猜你喜欢

热点阅读