要实现Android Kotlin中的自定义TextView三行显示,尾部加上省略号(...)并显示全文,可以通过以下步骤实现:

  1. 创建一个自定义的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
    }
}
  1. 在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" />
  1. 在代码中使用自定义的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时可以展开显示全文

Android kotlin 自定义TextView三行显示尾部加全文

原文地址: https://www.cveoy.top/t/topic/iYrt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录