android加载html标签字符串,Android TextView加载Html ,捕获a标签点击事件

本文介绍了在Android开发中如何使用TextView显示包含HTML标签的文本,并实现a标签的点击事件监听。通过Html.fromHtml方法将HTML字符串转换为Spanned对象,然后通过遍历URLSpan设置点击事件,实现不同链接触发不同的回调操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在android开发中,第一次使用安装APP,都有一个《用户协议》和《隐私政策》的弹框提示。

如下图所示:

075c539f9feb

yhx.png

1.怎么在一段文本中能够点击a标签呢?

首先:使用TextView显示一段代用标签的文本,如下所示:

欢迎使用小游戏APP。在您使用本APP前,请仔细阅读《用户协议》《隐私政策》的全部内容,同意并接受全部条款后开始使用我们的产品和服务。我们会严格按照政策内容使用和保护您的个人信息,感谢您的信任。
若您同意以上用户协议和隐私协议保护政策,请点击“同意”并开始使用我们的产品和服务。

使用Html.fromHtml

/**

* html 带有标签的文本

*/

private fun getClickableHtml(html: String?): CharSequence {

val spannedHtml: Spanned = Html.fromHtml(html)

val clickableHtmlBuilder = SpannableStringBuilder(spannedHtml)

val spans = clickableHtmlBuilder.getSpans(0, spannedHtml.length, URLSpan::class.java)

for (value in spans) {

setLinkClickable(clickableHtmlBuilder, value);

}

return clickableHtmlBuilder

}

/**

* 捕获标签点击事件

*/

private fun setLinkClickable(clickableHtmlBuilder: SpannableStringBuilder, urlSpan: URLSpan?) {

val start = clickableHtmlBuilder.getSpanStart(urlSpan)

val end = clickableHtmlBuilder.getSpanEnd(urlSpan)

val flags = clickableHtmlBuilder.getSpanEnd(urlSpan)

val clickableSpan = object : ClickableSpan() {

override fun onClick(p0: View) {

val url = urlSpan?.url

if (url?.contains("agreement.html")!!) {

mPrivacyDialogListener?.agreementOonClick(url)

} else {

mPrivacyDialogListener?.serviceOnClick(url)

}

}

override fun updateDrawState(ds: TextPaint) {

//设置颜色

ds.color = Color.parseColor("#FF9800")

//设置是否要下划线

ds.isUnderlineText = false

}

}

clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);

}

3.如何使用:

//测试文本上面有,直接复制过来运行看效果即可

mTextContent?.text = getClickableHtml("这里填写html文本")

//设置可点击,这句不能少

mTextContent?.movementMethod = LinkMovementMethod.getInstance()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值