半行文字显示“查看更多”TailTextView
发布网友
发布时间:2022-12-10 18:42
我来回答
共1个回答
热心网友
时间:2024-12-14 19:27
当一个文本过长的时候会显示很多行,为了显示更多的信息(露出更多的view),会出现查看更多的需求。类似于下图:
因为是在TextView内部处理这个事,所以一定要自定义TextView,把新的TextView叫做TailTextView。
大致思路如下:
自定义属性写了两个:showTail(是否显示小尾巴)和tailColor(尾巴颜色)
重写onMeasure方法,先使用super的测量方法得到TextView每一行的布局
拿到TextView前maxLines-1行的文字,作为一定显示的文字,最后一行作为要处理的文字
测量出小尾巴的宽度,将一行最大的宽度减去小尾巴宽度,得到原来文字最大宽度,使用这个宽度对最后一行文字进行裁切。
在刚才得到的文字上加上“…查看更多”,设置span,回调被裁切方法。
将新的Text重新设置到TextView上。
效果就是上面放的图了。
设置maxLines属性之后就不要设置ellipsize="end"了,可能会引起最后一行的宽度测量不准确。
screenWidth * 0.6f有点草率,可以修改的
如果要使用原来的maxLines属性的功能就设置showTail为false
没有给出TailTextView的全文,但核心内容就是这些了