Avatar
1
quanganh Beginner
quanganh Beginner
Clickable Android Toast
Hi anh,

Cho em hỏi là có cách nào để chèn html vào toast không.

Kiểu như khi toast show, chạm vào toast sẽ mở link trong trình duyệt.

Em cảm ơn.

  • Answer
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
Em thử xem sao nhé
  1. Custom toast có 1 cái TextView.
  2. Trong custom toast sử dụng ClickableSpan cho TextView đó.
  3. Mỗi lần sử dụng thì truyền content = HTML

Em thử code này xem sao nhé:

fun setHtmlWithLinkClickListener(textView: TextView, html: String, listener: ITextLinkListener, underline: Boolean = true) {
	val sequence = Html.fromHtml(html)
	val strBuilder = SpannableStringBuilder(sequence)
	val urls = strBuilder.getSpans(0, sequence.length, URLSpan::class.java)
	for (span in urls) {
		val start = strBuilder.getSpanStart(span)
		val end = strBuilder.getSpanEnd(span)
		val flags = strBuilder.getSpanFlags(span)
		val clickable = object : ClickableSpan() {
			override fun updateDrawState(ds: TextPaint) {
				ds.isUnderlineText = underline
			}
			override fun onClick(widget: View) {
				listener.onClicked(span.url)
			}
		}
		strBuilder.setSpan(clickable, start, end, flags)
		strBuilder.removeSpan(span)
	}
	textView.text = strBuilder
	textView.movementMethod = LinkMovementMethod.getInstance()
}

interface ITextLinkListener {
	fun onClicked(url: String)
}

Tác giả: Lê Thành Đô

  • 0
  • Reply