SpannableString 和 SpannableStringBuilder

個人學習筆記整理

用處

動態給一段文本內容設置不同的樣式?比如背景顏色,字體顏色,字體大小等等,在一些特殊的需求下,還是比較實用。

SpannableString 和 SpannableStringBuilder 類似 String 和 StringBuilder,前者不可變,後者可動態添加。二者在使用方法上類似。

主要方法

public void setSpan(Object what, int start, int end, int flags) {}

參數說明:

  • what : 核心,不同的span對應不同的樣式,具體如下
Span 樣式
ForegroundColorSpan 設置文本字體顏色
BackgroundColorSpan 設置背景顏色
AbsoluteSizeSpan 設置絕對的文字大小(單位px)
ClickableSpan 爲文字添加點擊事件
DynamicDrawableSpan 設置圖片,基於文本基線或底部對齊
ImageSpan 爲文本添加圖片
RelativeSizeSpan 設置相對文字大小,設置倍數,相對於其他文字的大小
StrikethroughSpan 添加刪除線
SubscriptSpan 設置下標文字
SuperscriptSpan 設置上標文字
URLSpan 文字設定超鏈接
UnderlineSpan 設置下劃線
  • start : 樣式開始生效位置,包括該位置
  • end : 樣式結束的位置,不包括該位置
  • flags : 標識在 Span 範圍內的文本前後輸入新的字符時是否把它們也應用這個效果
flags 作用
Spannable.SPAN_EXCLUSIVE_INCLUSIVE 在 Span前面輸入的字符不應用 span 的效果,在後面輸入的字符應用Span效果。
Spannable.SPAN_INCLUSIVE_EXCLUSIVE 在 Span前面輸入的字符應用 span 的效果,在後面輸入的字符不應用Span效果。
Spannable.SPAN_INCUJSIVE_INCLUSIVE 在 Span前後輸入的字符都應用 span 的效果。
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 在 Span前後輸入的字符前後都不應用 span 的效果。

具體效果

對比可以看出,EditText 中的文本樣式在不同的flags區別,對照作用,還是比較清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章