Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Listen to hyperlink tapped on text view
- class CustomLinkMovementMethod(private val onUrlTapped: (String) -> Unit) : LinkMovementMethod() {
- override fun onTouchEvent(widget: TextView?, buffer: Spannable?, event: MotionEvent?): Boolean {
- event?.let {
- val action = event.action
- if (action != MotionEvent.ACTION_UP)
- return super.onTouchEvent(widget, buffer, event)
- var x = event.x.toInt()
- var y = event.y.toInt()
- widget?.let { v ->
- x -= v.totalPaddingLeft;
- y -= v.totalPaddingTop;
- x += v.scrollX;
- y += v.scrollY;
- val layout = v.layout;
- val line = layout.getLineForOffset(y);
- val off = layout.getOffsetForHorizontal(line, x.toFloat());
- val link = buffer?.getSpans(off, off, URLSpan::class.java)
- link?.let {
- if (it.isNotEmpty()) {
- val url = (it[0] as URLSpan).url;
- if (url.isNotEmpty()) {
- onUrlTapped.invoke(url)
- }
- }
- }
- return true
- }
- }
- return super.onTouchEvent(widget, buffer, event)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement