TextView 或者 EidtView 。。。。 显示文字如果超长, 显示 ...

本文介绍如何使用Android的TextView组件实现文本的智能截断显示,包括在文本过长时自动添加省略号,并确保文本能在不同尺寸的屏幕上正确显示。

关于 TextView 或者 EidtView 。。。。 显示文字如果超长,

怎么让最后的地方 ... 显示出来,还要适应不同尺寸的屏幕(最好还能适应横竖屏切换)

当时为了 先赶工,随便写了个 方式(自己先鄙视一下我自己)

String show = notice.getText();
show = show.length() > 18 ? show.substring(0, 18) + "..." : show;

这个方式漏洞多的 让人抓狂,首先 如果中英文混杂   这里 就没法判断 字符长度了

更别说 不同尺寸的屏幕   和   适应横竖屏切换 了

 

好了 ,网上看到 一哥么写的 winCE 的文章,

微软都 实现了 GetTextExtentPoint 的方法了,没理由 后起之秀 android

不做吧,

果然,看了 api google 不但做了,而且做的更好,

看到 EditText 里有个 setEllipsize 方法

public void setEllipsize (TextUtils.TruncateAt where)

方法参数 TextUrils.TruncateAt   :

看到了吧,不但提供 后面加 ... 前面,中间 也可以,~~~

Summary

Enum Values
TextUtils.TruncateAt     END
TextUtils.TruncateAt    MARQUEE
TextUtils.TruncateAt    MIDDLE
TextUtils.TruncateAt     START

哦耶,搞定。

——————————

可能你要问 如果   layout 的 xml 文件里 怎么 弄呢?

public static final int ellipsize
Since: API Level 1

Where to ellipsize text.

Must be one of the following constant values.

ConstantValueDescription
none 0
start 1
middle 2
end 3
marquee 4

 

Constant Value: 16842923 (0x010100ab)
<TextView
   android:id="@+id/item_text"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="16sp"
   android:singleLine="true"
  android:ellipsize="end"
   >
   </TextView>

这里 要强调两点 一定要注意,不然   你就无缘看到 谷歌给你 加上的 ... 了

android:layout_width="wrap_content"       这个是   必须   的

android:singleLine="true"                         这个不必须, 因为 系统可能会两行 然后 加...
                                             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值