在更新 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 是正常的..只是传进来的参数没有达到预期的值...