SpannableString與SpannableStringBuilder使用【原創】_UI相關屬性

來源:互聯網
上載者:User

SpannableString與SpannableStringBuilder使用【原創】


1、SpannableString、SpannableStringBuilder與String的關係
首先SpannableString、SpannableStringBuilder基本上與String差不多,也是用來儲存字串,但它們倆的特殊就在於有一個SetSpan()函數,能給這些儲存的String添加各種格式或者稱樣式(Span),將原來的String以不同的樣式顯示出來,比如在原來String上加底線、加背景色、改變字型顏色、用圖片把指定的文字給替換掉,等等。所以,總而言之,SpannableString、SpannableStringBuilder與String一樣, 首先也是傳字串,但SpannableString、SpannableStringBuilder可以對這些字串添加額外的樣式資訊,但String則不行。
注意:如果這些額外資訊能被所用的方式支援,比如將SpannableString傳給TextView;也有對這些額外資訊不支援的,比如前一章講到的Canvas繪製文字,對於不支援的情況,SpannableString和SpannableStringBuilder就是退化為String類型,直接顯示原來的String字串,而不會再顯示這些附加的額外資訊。
2、SpannableString與SpannableStringBuilder區別
它們的區別在於 SpannableString像一個String一樣,構造對象的時候傳入一個String,之後再無法更改String的內容,也無法拼接多個 SpannableString;而SpannableStringBuilder則更像是StringBuilder,它可以通過其append()方法來拼接多個String;

3、SetSpan()
void setSpan (Object what, int start, int end, int flags)

函數意義:給SpannableString或SpannableStringBuilder特定範圍的字串設定Span樣式,可以設定多個(比如同時加上底線和刪除線等),Falg參數標識了當在所標記範圍前和標記範圍後緊貼著插入新字元時的動作,即是否對新插入的字元應用同樣的樣式。

參數說明:

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 :前後都包括。

下面寫了個小demo,先看一下效果圖:

代碼如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.