TextView使用Spannable設定複合文本

來源:互聯網
上載者:User

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的,可用於呼叫者使用儲存相關的標量資料與他們的跨度對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.