TextView使用Spannable設置復合文本

Spannable 對文字的編輯減少TextView的拼接並且達到改變一串字符中的部分文字的字體顏色,背景顏色,字體大小,樣式 增加文字的超鏈接。

如 把部分字體改成紅色:

SpannableString amountS=new SpannableString(amount);

   
amountS.setSpan(new ForegroundColorSpan(Color.RED), amount.indexOf(orderInfo.PayMoney+""), amount.indexOf("元")+1, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

具體主要介紹setSpan()中的what和flags參數:

 setSpan(Object what, int start, int end, int flags)

1.Object what主要是對文字的一些屬性的設置,大小,顏色,已經文字的背景顏色:

BackgroundColorSpan, ClickableSpan, ForegroundColorSpan, MaskFilterSpan, MetricAffectingSpan,

RasterizerSpan, StrikethroughSpan, SuggestionSpan, UnderlineSpan

詳細說明:

BackgroundColorSpan:背景顏色
ClickableSpan    設置可點擊的部分文字
ForegroundColorSpan  改變文字字體的顏色
MaskFilterSpan(MaskFilter filter) 修飾效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
MetricAffectingSpan
  直接子類:  AbsoluteSizeSpan, LocaleSpan, RelativeSizeSpan, ReplacementSpan, ScaleXSpan, StyleSpan, SubscriptSpan, SuperscriptSpan, TextAppearanceSpan, TypefaceSpan
  間接子類:  DynamicDrawableSpan, ImageSpan
 
RasterizerSpan 光柵效果
StrikethroughSpan  中劃線 (刪除線)
SuggestionSpan 占位符
UnderlineSpan 下劃線
ImageSpan 圖片包裹,可以在一段文字中添加一個圖片
SubscriptSpan 下標- 數學公式 用到
SuperscriptSpan 上標-數學公式會用到
ScaleXSpan(3.8f) 基於x軸的縮放
StyleSpan(Typeface.BOLD_ITALIC)字體樣式:粗體、斜體等
TextAppearanceSpan(this, android.R.style.TextAppearance_Medium) 文本外貌(包括字體、大小、樣式和顏色)
TypefaceSpan("monospace")文本字體
URLSpan("http://orgcent.com") 文本超鏈接

2.flags:對一段文字設置一些標識

 如:  Spannable.SPAN_EXCLUSIVE_INCLUSIVE

   SPAN_COMPOSING:臨時申請流行的一個輸入法的構成的文本信息  標示:該段文字可以被刪除或者替換
SPAN_EXCLUSIVE_EXCLUSIVE:包括內容不會擴大,隻會包含起點和終點,長度絕對不能為0,如果被刪除的所有它們涵蓋文字也會自動從緩沖區中刪除。
        SPAN_EXCLUSIVE_INCLUSIVE:可以擴大的跨度,非0,包括文字插入他們的終點,而不是在他們的出發點,如果為0的時候就像一個點。
SPAN_INCLUSIVE_EXCLUSIVE:可以擴大的跨度,非0,包括文字插入他們的出發點,而不是在他們的終點,如果為0的時候就像一個點
SPAN_INCLUSIVE_INCLUSIVE:跨度類型的擴大包括文本插入他們的起點或終點。
SPAN_INTERMEDIATE:標志將被設置為中間跨度的變化,這意味著有保證是另一個變化。通常情況下,它是用於選擇自動使用與第一偏移量被更新時選擇設置
SPAN_MARK_MARK:像文本標記長度為0的跨度與SPAN_MARK_MARK型:他們仍然在原來的偏移該偏移處插入文本時
SPAN_MARK_POINT:SPAN_MARK_POINT==SPAN_INCLUSIVE_INCLUSIVE
SPAN_PARAGRAPH :必須是它的端點的緩沖區或後立即\ n字符的開始或結束,而如果它被刪除,錨,端點被拉到下一個的\ n \ñ如下中的緩沖區(或結束緩沖區)。 即以換行符為起始點和終點
SPAN_POINT_MARK:SPAN_POINT_MARK==SPAN_EXCLUSIVE_EXCLUSIVE。
SPAN_POINT_MARK_MASK:
SPAN_POINT_POINT:長度為0的跨度型SPAN_POINT_POINT像遊標:它們被插入文本被插入時,在其偏移的長度推進。在概念上的文字插入點之前
SPAN_PRIORITY:指定由SPAN_PRIORITY位圖確定的順序變更通知 – 較高的數字先走。你可能並不需要設置的,通常使用在當文本變化的時候,能有機會更新數據,在其他回調的方法裡面進行處理之前
SPAN_PRIORITY_SHIFT:確定的順序變更通知 – 較高的數字先走。你可能並不需要設置的,通常使用在當文本變化的時候,能有機會更新數據 在其他回調的方法裡面進行處理之前
SPAN_USER:指定由SPAN_USER位域是呼叫者使用存儲相關的標量數據與他們的跨度對象
SPAN_USER_SHIFT:位編號SPAN_USER_SHIFT的,可用於呼叫者使用存儲相關的標量數據與他們的跨度對象

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。