2

有带有 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() 中编写的代码根本没有被调用。我在调试模式下检查了它。但是,链接被跟踪。

4

0 回答 0