我从后端收到了一个动态的自定义字符串,其中包含一个 HTML 标记<a href>
。
字符串如下所示:
"Some string from backend which have a `<a href="">`link`<a/>`. This string is passed to an app."
因此,在我的 Android 应用程序中,我希望仍然具有跨度外观(如 URLSpan 所具有的粗体链接等),但我想自己处理点击。因此,我不想在单击 WebView 时打开它,我想以某种方式覆盖对它的单击。
在安卓上可以吗?
我已经尝试过类似的方法,但它不起作用,我想有一种简单的方法可以做到这一点(也许不删除旧跨度,并从头开始创建链接外观,但只是以某种方式处理/覆盖点击它而不丢失链接外观?)
bodyText.text = SpannableStringBuilder.valueOf(bodyText.text).apply {
getSpans(0, length, URLSpan::class.java)
.forEach {
//add new clickable span at the same position
setSpan(
object : ClickableSpan() {
override fun onClick(widget: View) {
// trigger my own listener
Toast.makeText(bodyText.context, "Clicked old span", Toast.LENGTH_SHORT).show();
}
},
getSpanStart(it),
getSpanEnd(it),
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
//remove old URLSpan
removeSpan(it)
}
}
此代码不起作用,它只是从文本中删除链接。
我的情况是,当我触摸提到的跨度而不是触发 webview 时,我想显示一个对话框。