美文网首页
Android 超过三行加全文二字

Android 超过三行加全文二字

作者: 晶哥哥的号 | 来源:发表于2019-07-31 12:28 被阅读0次

class TextViewHelper {
/**
* 设置textView结尾...后面显示的文字和颜色
* @param context 上下文
* @param textView textview
* @param minLines 最少的行数
* @param originText 原文本
* @param endText 结尾文字
* @param endColorID 结尾文字颜色id
* @param isExpand 当前是否是展开状态
*/
fun toggleEllipsize(
context: Context,
textView: TextView,
minLines: Int,
originText: String,
endText: String,
endColorID: Int,
isExpand: Boolean
) {
if (TextUtils.isEmpty(originText)) {
return
}
textView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
if (isExpand) {
textView.text = originText
} else {
val paddingLeft = textView.paddingLeft
val paddingRight = textView.paddingRight
val paint = textView.paint
val moreText = textView.textSize * (endText.length + 3)
val availableTextWidth = (textView.width - paddingLeft - paddingRight) * minLines - moreText
val ellipsizeStr = TextUtils.ellipsize(
originText, paint,
availableTextWidth, TextUtils.TruncateAt.END
)

                if (ellipsizeStr.length < originText.length) {
                    val temp = ellipsizeStr.toString() + endText
                    val ssb = SpannableStringBuilder(temp)
                    ssb.setSpan(
                        object : ClickableSpan() {
                            override fun updateDrawState(ds: TextPaint) {
                                ds.color = ActivityCompat.getColor(context, endColorID)
                                ds.isAntiAlias = true
                                ds.isUnderlineText = false
                            }

                            override fun onClick(widget: View) {
                                textView.text = originText
                            }

                        },
                        temp.length - endText.length, temp.length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE
                    )
                    textView.text = ssb
                } else {
                    textView.text = originText
                }
            }
            if (Build.VERSION.SDK_INT >= 16) {
                textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
            } else {
                textView.viewTreeObserver.removeGlobalOnLayoutListener(this)
            }
        }
    })
}

}

相关文章

网友评论

      本文标题:Android 超过三行加全文二字

      本文链接:https://www.haomeiwen.com/subject/bzmzrctx.html