val textView: TextView = findViewById(R.id.my_text_view)
val fullText = "【置顶】这是一条可以点击的消息"
val spannable = SpannableString(fullText)
val start = 0
val end = 3
spannable.setSpan(
object : ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(widget.context, "你点击了【置顶】", Toast.LENGTH_SHORT).show()
}
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = true
ds.color = Color.BLUE
}
},
start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
textView.movementMethod = LinkMovementMethod.getInstance()
val textView: TextView = findViewById(R.id.my_text_view)
val fullText = "这是一段普通文本,置顶这四个字可以点击,其他文字不变。"
val clickableText = "置顶"
val startIndex = fullText.indexOf(clickableText)
val endIndex = startIndex + clickableText.length
val spannableString = SpannableString(fullText)
if (startIndex != -1 && endIndex <= fullText.length) {
spannableString.setSpan(
object : ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(widget.context, "你点击了:$clickableText", Toast.LENGTH_SHORT).show()
}
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = true
ds.color = Color.BLUE
}
},
startIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
textView.text = spannableString
textView.movementMethod = LinkMovementMethod.getInstance()