android span的用法,Android Span的使用
Android中TextView作為最常用的組件, 常常有很多特殊的需求,例如:嵌入圖標(biāo)、部分文字可點(diǎn)擊,點(diǎn)擊鏈接等,這些需求都可以通過Span來實(shí)現(xiàn)。
上面就是系統(tǒng)提供的所有可用的Span類。下面就來解決上面提出的兩個(gè)問題。
1.文字中添加圖片
這種方式的實(shí)現(xiàn)主要是利用ImageSpan
val spannableString = SpannableString("img這是一張圖片")
getDrawable(this, R.mipmap.ic_launcher)?.let {
it.setBounds(0, 0, 100, 100)
val dynamicDrawableSpan =
ImageSpan(it, ImageSpan.ALIGN_BOTTOM)
spannableString.setSpan(dynamicDrawableSpan, 0, 3 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
val subscriptSpan = SubscriptSpan()
spannableString.setSpan(subscriptSpan, 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv.setText(spannableString)
}
代碼中不是使用了ImageSpan,同時(shí)使用了SubscriptSpan,主要是為了,調(diào)整圖片的位置,實(shí)現(xiàn)類似居中的效果,在實(shí)際開發(fā)中可以通過,SubscriptSpan、SuperscriptSpan,來調(diào)整圖片的位置。
2、文字可點(diǎn)擊
val spannableString = SpannableString("你好,再見")
val dynamicDrawableSpan =
object : ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(widget.context, "點(diǎn)擊你好", Toast.LENGTH_SHORT).show()
}
}
spannableString.setSpan(dynamicDrawableSpan, 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv.text = spannableString
tv.movementMethod = LinkMovementMethod.getInstance()
文字點(diǎn)擊的方案就是實(shí)現(xiàn)ClickableSpan的onClick方法,然后設(shè)置movmentMethod就可以了,不過他會(huì)有可以點(diǎn)擊的文字會(huì)有獨(dú)特的顏色和下劃線。想要修改的話只要繼承ClickableSpan,然后重寫updateDrawState方法就好了。
abstract class TextColorSpan(var color: Int) : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = color
}
}
總的來說,span的使用并不復(fù)雜,只要使用系統(tǒng)提供的Span就可以解決大部分問題。
總結(jié)
以上是生活随笔為你收集整理的android span的用法,Android Span的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 获取图片像素密度,and
- 下一篇: html中加入js,html嵌入js