ZRegion 2019-03-12 19:40 采纳率: 100%
浏览 409
已采纳

更改 TextView 的 ClickableSpan 导致的链接混乱...

在更新 TextView 的 ClickableSpan 后,
当文章中有两个链接,随意点击一个,首次点击都能访问正常,

【假设第一次点了链接A,再点链接B,还是显示链接A的内容.】

会往后推一个链接...

假设第一次点了链接A 正常,再点链接B 还是链接A
这时候再点链接A 结果是链接B
再点链接B 结果是链接A

相关代码

                    <TextView
                        android:id="@+id/info"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@color/white"
                        android:lineSpacingMultiplier="1.3"
                        android:textIsSelectable="true"
                        android:autoLink="web"
                        android:paddingLeft="20dp"
                        android:paddingRight="20dp"
                        android:paddingTop="25dp"
                        android:paddingBottom="25dp"
                        android:text="@string/info"
                        android:textSize="17sp"/>

    override fun setData(problem: String, info: String) {
        // 返回
        this.mInfo!!.text = info
        this.mInfo!!.post {
            // 初始化 autoLink
            setUrlText(mInfo!!)
        }
        // 问题
        this.mProblem!!.text = problem
    }

    private fun setUrlText(textView: TextView) {
        val text: CharSequence = textView.text
        if (text is Spannable) {
            val end = text.length
            val urls = text.getSpans(0, end, URLSpan::class.java)
            val style = SpannableStringBuilder(text)
            style.clearSpans()
            for (urlSpan in urls) {

                // TODO("此处有BUG,第一次点击正常,第二次点击往后推移一个网站.")
                val myURLSpan = WebURLSpan(
                    (activity as BaseActivity)
                    , urlSpan.url
                )
                // 设置Span
                style.setSpan(
                    myURLSpan, text.getSpanStart(urlSpan),
                    text.getSpanEnd(urlSpan),
                    Spannable.SPAN_EXCLUSIVE_INCLUSIVE
                )
            }
            textView.text = style
        }
    }

        class WebURLSpan(val activity: BaseActivity, val url: String) : ClickableSpan() {
    override fun onClick(arg0: View) {
        Log.d(TAG, "被点击:$url")
    }
}

WebURLSpan 是正常的..只是传进来的参数没有达到预期的值...

  • 写回答

1条回答 默认 最新

  • ZRegion 2019-03-12 19:51
    关注

    ...... 好吧 我找到原因了

    autoLink和textIsSelectable可能存在冲突问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog