Android kotlin 自定义TextView三行显示尾部加全文
要实现Android Kotlin中的自定义TextView三行显示,尾部加上省略号(...)并显示全文,可以通过以下步骤实现:
- 创建一个自定义的TextView类,继承自TextView。
class EllipsizingTextView(context: Context, attrs: AttributeSet) : TextView(context, attrs) {
private val ELLIPSIS = "..."
private var isEllipsized = false
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
val layout = layout
if (layout != null && layout.lineCount > 0) {
val ellipsisCount = layout.getEllipsisCount(layout.lineCount - 1)
isEllipsized = ellipsisCount > 0
if (isEllipsized) {
val originalText = text.toString().trim { it <= ' ' }
val newText = originalText.substring(0, originalText.length - ellipsisCount) + ELLIPSIS
text = newText
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
}
}
}
fun isEllipsized(): Boolean {
return isEllipsized
}
}
- 在XML布局文件中使用自定义的TextView。
<com.example.ellipsizingtextview.EllipsizingTextView
android:id="@+id/ellipsizing_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:ellipsize="end"
android:text="Your text here" />
- 在代码中使用自定义的TextView,并设置全文点击事件。
val ellipsizingTextView = findViewById<EllipsizingTextView>(R.id.ellipsizing_text_view)
ellipsizingTextView.setOnClickListener {
if (ellipsizingTextView.isEllipsized()) {
ellipsizingTextView.maxLines = Integer.MAX_VALUE
ellipsizingTextView.ellipsize = null
} else {
ellipsizingTextView.maxLines = 3
ellipsizingTextView.ellipsize = TextUtils.TruncateAt.END
}
}
这样,当TextView的内容超过三行时,尾部会自动加上省略号,点击TextView时可以展开显示全文
原文地址: https://www.cveoy.top/t/topic/iYrt 著作权归作者所有。请勿转载和采集!