SpannableStringBuilder SpannableString

  1. 與String 關系
    二者和String 一樣用來存儲字符串,但它們倆的特殊就在于有一個SetSpan(),能給這些存儲的String添加各種格式或者稱樣式(Span),將原來的String以不同的樣式顯示出來,比如在原來String上加下劃線、加背景色、改變字體顏色、用圖片把指定的文字給替換掉,等等
    2.二者區別
    區別在于 SpannableString像一個String一樣,構造對象的時候傳入一個String,
    之后再無法更改String的內容,也無法拼接多個 SpannableString;
    而SpannableStringBuilder則更像是StringBuilder,它可以通過其append()方法來拼接多個String。

eg 1: 使用SpannableString,必須一次傳入,構造完成
SpannableString ss= new SpannableString("歡迎光臨longmaxie的主頁");

eg 2 :使用SpannableStringBuilder,可以使用append()再添加
SpannableStringBuilder ssb= new SpannableStringBuilder();
ssb.append("歡迎光臨");
ssb.append("longmaxie");
ssb.append("主頁");
因為Spannable等最終都實現了CharSequence接口,所以可以直接把SpannableString和SpannableStringBuilder通過TextView.setText()設置給TextView。

  1. void setSpan (Object what, int start, int end, int flags)
    給SpannableString或SpannableStringBuilder特定范圍的字符串設定Span樣式,
    可以設置多個(比如同時加上下劃線和刪除線等),Flag參數標識了當在所標記范圍前和標記范圍后緊貼著插入新字符時的動作,即是否對新插入的字符應用同樣的樣式
    參數說明:
    object what :對應的各種Span;
    int start:開始應用指定Span的位置,索引從0開始
    int end: 結束應用指定Span的位置,特效并不包括這個位置。比如如果這里數為3(即第4個字符),第4個字符不會有任何特效。
    int flags:取值有如下四個:
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范圍的前面和后面插入新字符都不會應用新樣式
    Spannable.SPAN_EXCLUSIVE_INCLUSIVE :前面不包括,后面包括。即僅在范圍字符的后面插入新字符時會應用新樣式
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE :前面包括,后面不包括。Spannable.SPAN_INCLUSIVE_INCLUSIVE :前后都包括。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容