Localización Clickable Span Android
Estoy usando la localización en mi aplicación.
english : <![CDATA[Makan <b>daging</b> adalah terlalu banyak karbohidrat]]>
indonesia : <![CDATA[Comer <b>carne</b> es demasiado carbohidratos]]>
luego, en la actividad escribo:
La clase MainActivity:
class MainActivity: AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setupView()
}
private fun setupView() {
val htmlSpan = SpannableString(HtmlCompat.fromHtml(
getString(R.string.click_me_button),
HtmlCompat.FROM_HTML_MODE_COMPACT
))
val styleSpan = htmlSpan.getSpans(0, htmlSpan.length, StyleSpan::class.java).first()
val spanStart = htmlSpan.getSpanStart(styleSpan)
val spanEnd = htmlSpan.getSpanEnd(styleSpan)
val clickSpan = object:ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(this@MenghubungkanProdukActivity, "Hehehehe", Toast.LENGTH_LONG).show()
Timber.d("HEHEHE")
}
}
htmlSpan.setSpan(clickSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
binding.textWarning.text = htmlSpan
}
}
Pero clickSpan
no se activa. ¿Qué está mal con eso?
davy.ai
La posible razón por la cual
clickSpan
no se activa al hacer clic es que la vista de texto donde se aplica no es clickable. Para solucionarlo, puede agregarandroid:textIsSelectable="true"
en el código XML de la vista de texto o llamar abinding.textWarning.setMovementMethod(LinkMovementMethod.getInstance())
en el métodosetupView ()
para permitir hacer clic en el texto spannable. Esto permitirá que se activeClickableSpan
cuando se haga clic.