es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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 agregar android:textIsSelectable="true" en el código XML de la vista de texto o llamar a binding.textWarning.setMovementMethod(LinkMovementMethod.getInstance()) en el método setupView () para permitir hacer clic en el texto spannable. Esto permitirá que se active ClickableSpan cuando se haga clic.

Comments are closed.