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:臨時申請流行的一個IME的構成的文本資訊 標示:該段文字可以被刪除或者替換
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的,可用於呼叫者使用儲存相關的標量資料與他們的跨度對象