1. 程式人生 > >安卓TextView中改變部分文字顏色的幾種方式

安卓TextView中改變部分文字顏色的幾種方式


1. 第一種使用SpannableStringBuilder 
//部分文字改變顏色  
//ForegroundColorSpan 為文字前景色,BackgroundColorSpan為文字背景色  
ForegroundColorSpan redSpan = new ForegroundColorSpan(getResources().getColor(R.color.text_red));  
ForegroundColorSpan graySpan = new ForegroundColorSpan(getResources().getColor(R.color.text_gray));  
mTextView.setText("灰色紅色");  
//這裡注意一定要先給textview賦值  
SpannableStringBuilder builder = new SpannableStringBuilder(mTextView.getText().toString());  
//為不同位置字串設定不同顏色  
builder.setSpan(graySpan, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
builder.setSpan(redSpan, 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
//最後為textview賦值  
mTextView.setText(builder); 
2. 第二種,使用Html.fromHtml()
TextView desc1 = (TextView)findViewById(R.id.desc1);
TextView desc2 = (TextView)findViewById(R.id.desc2);
TextView desc3 = (TextView)findViewById(R.id.desc3);
String content1 = "務必使用<font color='red'>銀行卡</font>開戶時<font color='red'>預留手機號</font>!";
String content2 = "點選獲取驗證碼按鈕後,您將收到<font color='red'>銀行驗證碼簡訊</font>!";
String content3 = "時間<font color='red'>工作日09:00 - 次日06:00</font>!";
desc1.setText(Html.fromHtml(content1));
desc2.setText(Html.fromHtml(content2));
desc3.setText(Html.fromHtml(content3));

3. 總結

1. 使用SpannableStringBuilder由於顏色是在本地定義的,所以可以精確地控制要顯示的顏色,相容性最好。

缺點也很明顯太麻煩了,需要為每一種顏色定義一個ForegroundColorSpan 

2. 使用Html方式則相對比較簡單,直接在字串裡面使用標籤即可,但是缺點也相對明顯,只能使用標籤裡面預定義的集中顏色值,與本地相容性不是很好

4. 若還有其他方式歡迎指出

相關推薦

TextView改變部分文字顏色方式

1. 第一種使用SpannableStringBuilder //部分文字改變顏色 //ForegroundColorSpan 為文字前景色,BackgroundColorSpan為文字背景色

給你的TextView部分文字加入沒有下劃線的超連結

專案優化,當網路請求失敗時加上提醒,並可以點選TextView中的“重新整理”兩個字再次請求。使用ClickableSpan對超連結進行設定。預設情況下的樣式是這樣的: 想要的樣式是這樣的: 我們使用預設ClickableSpan的方法如下: Spannab

TextView部分文字新增連結的兩方式

public class MainActivity extends ActionBarActivity{ private int systemVersion; private TextView tv; static Context ctx = null ; @Overri

開發常見的RGB顏色

自己在開發過程中發現經常要用到顏色的RGB值,每次都是網上百度,十分苦惱,索性寫出來供參考 如paint.setARGB(255, 127, 255, 212);就需要自己計算下分量的各個值。這裡提供一個帶有r g b分量的int型的顏色表。注意paint.setAlp

TextView部分文字變色和新增點選

只給textview設定字型顏色 CharSequence str=getText("你說啥呢"); SpannableString spannableString1 = new SpannableString(str); spannableString1.s

關於TextView修改部分字型顏色、大小方法的總結

TextView屬性描述 屬性名稱    描述  android:autoLink    設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。可選值(none/web/email/phone/map/all)  android:autoT

TextView部分文字響應點選事件

TextView是android常用的控制元件,經常要顯示不同文字的大小,顏色,......今天要實現這樣這樣一個需求,TextView某段內容顯示的文字顏色不一樣,並且點選區域只能是改變了顏色的字. 1.給TextView設定設定文字背景為透明色,不然會有點選選中效果.

前端知識小節--js改變this指向的三方式

在寫程式碼完成專案的過程中我們經常會遇到需要改變this指向來實現功能的時候,以下三種方式是常用的改變this指向的方法: 1.call call中的引數有多個,如: aa.call(obj,num1,num2); obj是函式執行的作用域,num1,num2是要給函式傳的

cocos2d的新增文字的三方式

在 cocos2d 中有三個類可以在層或精靈中新增文字: CCLabelTTFCCLabelBMFontCCLabelAtlas CCLabelTTF 每次呼叫 setString (即改變文字)的時候,一個新的OPENGL 紋理將會被建立.。這意味著setString 和建立一個新的標籤一樣慢。所以,當你

cocos2d-x 新增顯示文字的三方式 LabelTTF 、LabelBMFont 和 LabelAtlas

在 cocos2d-x 中有三個類可以在層或精靈中新增文字: LabelTTFLabelBMFontLabelAtlas LabelTTF 直接支援使用 TTF 字型檔,可以支援全部的中文,但是效率稍低。LabelBMFont 適合顯示特定的文字,通過預先將文字生成圖片,

JS定義對象的方式

cnblogs turn 函數對象 屬性。 array fff 動態 pan 改進 在JavaScript中定義對象可以采用以下幾種方式:   1.基於已有對象擴充其屬性和方法   2.工廠方式   3.構造函數方式   4.原型(“prototype”)方式   5.動態

ASP.Net頁面傳值的方式

webconfig local 區別 重啟 Nid 傳遞對象 app too BE 大致概括一下,ASP.NET 頁面之間傳遞值得方式大致可以分為如下幾種:Request.QueryString["name"],Request.Form("name"),Session,Co

js檢測資料型別的方式

1、typeof 一元運算子,用來檢測資料型別。只可以檢測number,string,boolean,object,function,undefined。 對於基本資料型別是沒有問題的,但是遇到引用資料型別是不起作用的(無法細分物件)

Go實戰--golang讀寫檔案的方式

讀寫檔案應該是在開發過程中經常遇到的,今天要跟大家一起分享的就是在golang的世界中,如何讀寫檔案。 使用io/ioutil進行讀寫檔案 其中提到了兩個方法: func ReadFile func ReadFile(filename string) ([]by

Web開發 前端路由 實現的方式和適用場景

故事從名叫Oliver的綠箭蝦`說起,這位大蝦酷愛社交網站,一天他打開了 Twitter ,從發過的tweets的選項卡一路切到followers選項卡,Oliver發現頁面的內容變化了,URL也變化了,但為什麼頁面沒有閃爍重新整理呢?於是Oliver開啟的網路監控器(沒錯,Oliver是個程式設計師),他驚

Shell表示數字跨度的方式

在Shell指令碼中,如果要輸出數字為0-20中3的倍數。可以使用下面三種方式來完成 方式一:  ((i=0;i<=20;i+=3)) for((i=0;i<20;i+=3)) do echo $i done 方式二: {0..20..3} for

Javaweb頁面跳轉的方式

1.轉發   request.getRequestDispatcher("/homework0608/1.jsp").forward(request, response); 2.重定向     方式一:       response.setHeader("Refresh",

android獲取日期時間的方式

日期時間的獲取方式如下所示: 1、使用SimpleDateFormat和Date類獲取日期時間 private String _GetYear(){ SimpleDateFormat sdf

Spring MVC返回JSON資料的方式

我們都知道Spring MVC 的Controller方法中預設可以返回ModeAndView 和String 型別,返回的這兩種型別資料是被DispatcherServlet拿來給到檢視解析器進行繼續處理返回頁面的,而不是直接返回給客戶端的。有時候我們需要發請求後讓服務端直接返回一些資料,不再經過Dispa

thinkphpURL傳引數的方式

在thinkphp中,url傳參合asp.net中原理類似,下面就單個引數和多個引數傳遞方式進行一個簡單講解1.傳單個引數 單個引數這種比較簡單,例如 想像edit操作裡面傳遞一個id值,如下寫法__URL__/edit/id/11http://localhost/index.php/user/edit/id