美文网首页
Android TextView加载Html ,捕获a标签点击事

Android TextView加载Html ,捕获a标签点击事

作者: Android砖家 | 来源:发表于2020-09-16 18:18 被阅读0次

    前言:

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

    如下图所示:

    yhx.png

    1.怎么在一段文本中能够点击a标签呢?
    首先:使用TextView显示一段代用<font>标签的文本,如下所示:

    
    <font color="#222222">欢迎使用小游戏APP。在您使用本APP前,请仔细阅读<font color="#FF9800"><a href= "https://baidu.com/agreement.html">《用户协议》</a ></font>和<font color="#FF9800"><a href="https://baidu.com/privacy.html">《隐私政策》</a ></font>的全部内容,同意并接受全部条款后开始使用我们的产品和服务。我们会严格按照政策内容使用和保护您的个人信息,感谢您的信任。<br/><br/>若您同意以上用户协议和隐私协议保护政策,请点击“同意”并开始使用我们的产品和服务。</font>
    
    1. 使用Html.fromHtml
     /**
         * html  带有<font>标签的文本
         */
        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
        }
    
    
    
     /**
         * 捕获<a>标签点击事件
         */
        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()
    

    相关文章

      网友评论

          本文标题:Android TextView加载Html ,捕获a标签点击事

          本文链接:https://www.haomeiwen.com/subject/koshyktx.html