mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Use new LinkMovementMethod()
This commit is contained in:
parent
ca125d1f79
commit
e1e1916126
@ -15,6 +15,7 @@ import android.net.Uri
|
||||
import android.os.Parcel
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.format.DateFormat
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.text.style.*
|
||||
import android.text.util.Linkify
|
||||
import android.view.Gravity
|
||||
@ -60,7 +61,6 @@ import com.looker.droidify.utility.extension.text.formatSize
|
||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||
import com.looker.droidify.utility.extension.text.trimAfter
|
||||
import com.looker.droidify.utility.extension.text.trimBefore
|
||||
import com.looker.droidify.widget.ClickableMovementMethod
|
||||
import com.looker.droidify.widget.StableRecyclerAdapter
|
||||
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
|
||||
import org.intellij.markdown.html.HtmlGenerator
|
||||
@ -419,7 +419,7 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
||||
itemView as MaterialTextView
|
||||
itemView.setTextSizeScaled(15)
|
||||
itemView.resources.sizeScaled(16).let { itemView.setPadding(it, it, it, it) }
|
||||
itemView.movementMethod = ClickableMovementMethod
|
||||
itemView.movementMethod = LinkMovementMethod()
|
||||
itemView.layoutParams = RecyclerView.LayoutParams(
|
||||
RecyclerView.LayoutParams.MATCH_PARENT,
|
||||
RecyclerView.LayoutParams.WRAP_CONTENT
|
||||
|
@ -1,67 +0,0 @@
|
||||
package com.looker.droidify.widget
|
||||
|
||||
import android.text.Selection
|
||||
import android.text.Spannable
|
||||
import android.text.method.MovementMethod
|
||||
import android.text.style.ClickableSpan
|
||||
import android.view.KeyEvent
|
||||
import android.view.MotionEvent
|
||||
import android.widget.TextView
|
||||
|
||||
object ClickableMovementMethod : MovementMethod {
|
||||
override fun initialize(widget: TextView, text: Spannable) {
|
||||
Selection.removeSelection(text)
|
||||
}
|
||||
|
||||
override fun onTouchEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean {
|
||||
val action = event.action
|
||||
val down = action == MotionEvent.ACTION_DOWN
|
||||
val up = action == MotionEvent.ACTION_UP
|
||||
return (down || up) && run {
|
||||
val x = event.x.toInt() - widget.totalPaddingLeft + widget.scrollX
|
||||
val y = event.y.toInt() - widget.totalPaddingTop + widget.scrollY
|
||||
val layout = widget.layout
|
||||
val line = layout.getLineForVertical(y)
|
||||
val offset = layout.getOffsetForHorizontal(line, x.toFloat())
|
||||
val span = text.getSpans(offset, offset, ClickableSpan::class.java)?.firstOrNull()
|
||||
if (span != null) {
|
||||
if (down) {
|
||||
Selection.setSelection(text, text.getSpanStart(span), text.getSpanEnd(span))
|
||||
} else {
|
||||
span.onClick(widget)
|
||||
}
|
||||
true
|
||||
} else {
|
||||
Selection.removeSelection(text)
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onKeyDown(
|
||||
widget: TextView,
|
||||
text: Spannable,
|
||||
keyCode: Int,
|
||||
event: KeyEvent,
|
||||
): Boolean = false
|
||||
|
||||
override fun onKeyUp(
|
||||
widget: TextView,
|
||||
text: Spannable,
|
||||
keyCode: Int,
|
||||
event: KeyEvent,
|
||||
): Boolean = false
|
||||
|
||||
override fun onKeyOther(view: TextView, text: Spannable, event: KeyEvent): Boolean = false
|
||||
override fun onTakeFocus(widget: TextView, text: Spannable, direction: Int) = Unit
|
||||
override fun onTrackballEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean =
|
||||
false
|
||||
|
||||
override fun onGenericMotionEvent(
|
||||
widget: TextView,
|
||||
text: Spannable,
|
||||
event: MotionEvent,
|
||||
): Boolean = false
|
||||
|
||||
override fun canSelectArbitrarily(): Boolean = false
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user