有带有 HTML 标签的文本。按照其他答案的说明,我使用 HtmlCompat 格式化文本并添加了 ClickableSpan 和 LinkMovementMethod。但是,当我点击链接时,我只是跟随它,并且我在 onClick() 中定义的附加操作不会执行。我应该怎么办?
val linkText = notification.description.substringBeforeLast("</a>")
.substringAfterLast("\">")
val str = HtmlCompat.fromHtml(
notification.description,
HtmlCompat.FROM_HTML_MODE_COMPACT
) as SpannableStringBuilder
val start = str.indexOf(linkText, ignoreCase = true)
str.setSpan(
object : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = ds.linkColor
ds.isUnderlineText = true
}
override fun onClick(widget: View) {
Selection.setSelection((widget as TextView).text as Spannable, 0)
widget.invalidate()
listener.onClick(notification.id)
}
},
start,
start + linkText.length - 1,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
tvDescription.movementMethod = LinkMovementMethod.getInstance()
tvDescription.setText(str, TextView.BufferType.SPANNABLE)
因此,我在这个函数 onClick() 中编写的代码根本没有被调用。我在调试模式下检查了它。但是,链接被跟踪。