问题描述:
文本后需要加指定内容,超出maxline需要展示...,且需要兼容后面添加的内容。 比如,在文本最后添加箭头,或者文本最后添加高亮文本查看更多等。
解决方法:
val drawable = context.resources.getDrawable(R.mipmap.*)
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
val imageSpan = ImageSpan(drawable, ImageSpan.ALIGN_CENTER)
val ellipsizeText = TextUtils.ellipsize(
content,
textView.paint,
(getScreenWidth() - 42.dp()) * 2 - 48.dp().toFloat(), // 48 图片宽度, 42距离屏幕间距
TextUtils.TruncateAt.END )
val spannableString = SpannableStringBuilder()
spannableString.apply {
append(ellipsizeText)
append(" ")
setSpan(
imageSpan,
spannableString.length -1,
spannableString.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
}
textView.text = spannableString
这个例子是在文本后添加一个drawable,如果maxline=1,是可以直接在xml中添加drawableEnd的,但是多行的drawable高度会对齐textview。
其中最关键的是TextUtils.ellipsize方法,参数分别是 需要计算长度的文本,textview.paint,截断时文本的长度(长度= (屏幕宽度-间距)* maxline - drawable宽度),文本截断方式。
最后设置span就可以了。