1. 程式人生 > >Android佈局中動態修改TextView等控制元件中文字的顏色

Android佈局中動態修改TextView等控制元件中文字的顏色

在Android介面展示資訊時,有時我們需要相近或相鄰的文字顯示不同的文字格式,這時該怎麼辦呢?我們有至少兩種辦法:

  • 新增多個控制元件
  • 在控制元件修改區域性文字

今天我們來談一下如何在控制元件中修改區域性文字。

1、SpannableStringBuilder類

我們要用到SpannableStringBuilder這個類,這是一個內容和標記都可以更改的文字類,它與SpannableString的關係類似於StringBuilder和String的關係,比如前者可以利用append方法去動態改變相應物件的內容。

2、Span方法

SpannableStringBuilder的setSpan()方法:
void setSpan(Object what,int start,int end,int flags)
函式作用:可以給SpannableStringBuilder設定特殊的文字樣式,比如文字顏色、背景顏色、超連結、樣式、刪除線、下劃線等。
引數說明:
第一個引數what:樣式span (測量 測繪)
第二、第三個引數start-end:樣式改變的起始和終止索引(從0開始)。需要注意的是1,3表示的是[1,3)的意思,即從索引1開始,在索引3之前停止
第四個引數flags:是否影響前後插入的文字,EXCLUSIVE和INCLUSIVE分別表示不影響和影響,兩兩組合可以形成4種引數,分別為:

  • Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 前後均無影響
  • Spannable.SPAN_EXCLUSIVE_INCLUSIVE 只後影響
  • Spannable.SPAN_INCLUSIVE_EXCLUSIVE 只前影響
  • Spannable.SPAN_INCLUSIVE_INCLUSIVE 前後均影響

3、舉例說明

SpannableStringBuilder builder 
//設定文字顏色Span
ForegroundColorSpan Span1 = new ForegroundColorSpan(Color.RED);
//設定背景顏色Span
BackgroundColorSpan Span2 = new BackgroundColorSpan(Color.YELLOW
); //設定超連結Span URLSpan Span3 = new URLSpan("wwww.baidu.com"); //設定文字樣式之字型Span AbsoluteSizeSpan Span4 = new AbsoluteSizeSpan(80); //設定刪除線Span StrikethroughSpan Span5 = new StrikethroughSpan(); //設定下劃線Span UnderlineSpan Span6 = new UnderlineSpan(); builder.setSpan(Span1,0,1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan
(Span2,1,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span3,2,3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span4,3,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span5,4,5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span6,5,6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.setText(builder);

效果圖如下:

這裡寫圖片描述

當然,還有更多可選的Span型別,具體的大家參考官方API吧~