Я нашел обходной путь, изменив свой LinkMovementMethod
import android.text.Spannable
import android.text.style.URLSpan
import android.view.MotionEvent
import android.widget.TextView
class MyLinkMovementMethod(var onUrlClickListener: (String) -> Unit) : android.text.method.LinkMovementMethod() {
override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean {
val action = event.action
if (action == MotionEvent.ACTION_UP) {
var x = event.x.toInt()
var y = event.y.toInt()
x -= widget.totalPaddingLeft
y -= widget.totalPaddingTop
x += widget.scrollX
y += widget.scrollY
val layout = widget.layout
val line = layout.getLineForVertical(y)
val off = layout.getOffsetForHorizontal(line, x.toFloat())
val link = buffer.getSpans(off, off, URLSpan::class.java)
if (link.isNotEmpty()) {
val url = link[0].url
if (url.contains("https") or url.contains("tel") or url.contains("mailto") or url.contains("http") or url.contains("https") or url.contains("www")) {
onUrlClickListener(url)
}
return true
}
}
return super.onTouchEvent(widget, buffer, event)
}
}
Вы можете добавить своих собственных слушателей, изменив код, сейчас я добавил слушателя для кликов по URL. Вы можете использовать его в своем коде, добавив следующую строку:
textview.movementMethod = MyLinkMovementMethod(fun(url: String) {
Log.e("URL", url)
})
Код указан в Котлине.