我在我的应用程序中使用本地化。
english : `<![CDATA[Makan <b>daging</b> adalah terlalu banyak karbohidrat]]>`
indonesia : `<![CDATA[Eating <b>meat</b> is too much carbohydrates]]>`
然后在活动中我写:
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
}
}
But clickSpan
不触发。它出什么问题了?
实际上我的代码正在运行。但我刚刚意识到我没有设置movementMethod
of the TextView
所以解决方案是添加这一行:
binding.textWaring.movementMethod = LinkMovementMethod.getInstance()
所以它看起来像这样:
private fun setupTextWarning() {
val htmlSpan = SpannableString( ... )
val moreSpan = htmlSpan.getSpans(0, htmlSpan.length, StyleSpan::class.java).first()
val spanStart = htmlSpan.getSpanStart(moreSpan)
val spanEnd = htmlSpan.getSpanEnd(moreSpan)
val clickSpan = object : ClickableSpan() { ... }
htmlSpan.setSpan(clickSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
binding.textWarning.text = htmlSpan
binding.textWarning.movementMethod = LinkMovementMethod.getInstance()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)