SpannableStringBuilder#setSpan需要注意的地方

645 阅读1分钟

ClickableSpan

ClickableSpan默认会有下划线,并且文字在被点击时会有背景色。通过重写updateDrawState可以去掉。

 val clickableSpan = object : ClickableSpan(){
     override fun updateDrawState(ds : TextPaint){
         super.updateDrawState(ds)
         //去掉下划线
         ds.isUnderlineText = false
         //去掉点击时文字背景色
          ds.bgColor = Color.parseColor("#FFFFFFFF")
           //去掉字体默认的主题颜色,改成自己需要的颜色即可。
           ds.color = Color.parseColor("#ffacacac")
     }
 }

ForegroundColorSpan

一段文件有多处需要设置ForegroundColorSpan,只有最后一次调用会生效。可以通过CharacterStyle来解决。

  val colorSpan1 : ForegroundColorSpan
  val colorSpan2 : ForegroundColorSpan
  val builder : SpannableStringBuilder
  builder.setSpan(CharacterStyle.wrap(colorSpan1))
   builder.setSpan(CharacterStyle.wrap(colorSpan2))