【Android 】TextView 區域性文字變色
TextView 對於富文字效果的實現支援不支援呢?比如“區域性文字顏色的變動”,“區域性字型的變動”
一、需求效果
二、解決方案
針對這類問題,Android提供了 SpannableStringBuilder,方便我們自定義富文字的實現。
textView = (TextView) findViewById(R.id.textview);
SpannableStringBuilder builder = new SpannableStringBuilder(textView.getText().toString());
//ForegroundColorSpan 為文字前景色,BackgroundColorSpan為文字背景色
ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);
ForegroundColorSpan whiteSpan = new ForegroundColorSpan(Color.WHITE);
ForegroundColorSpan blueSpan = new ForegroundColorSpan(Color.BLUE);
ForegroundColorSpan greenSpan = new ForegroundColorSpan(Color.GREEN);
ForegroundColorSpan yellowSpan = new ForegroundColorSpan(Color.YELLOW);
builder.setSpan(redSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(whiteSpan, 1, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
builder.setSpan(blueSpan, 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(greenSpan, 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(yellowSpan, 4,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(builder);
除了上述程式碼中使用的 ForegroundColorSpan 和 BackgroundColorSpan之外,還有以下這些Span可以使用:
AbsoluteSizeSpan(int size) —— 設定字型大小,引數是絕對數值,相當於Word中的字型大小
RelativeSizeSpan(float proportion) —— 設定字型大小,引數是相對於預設字型大小的倍數,比如預設字型大小是x, 那麼設定後的字型大小就是x*proportion,這個用起來比較靈活,proportion>1就是放大(zoom in), proportion<1就是縮小(zoom out)
ScaleXSpan(float proportion) —— 縮放字型,與上面的類似,預設為1,設定後就是原來的乘以proportion,大於1時放大(zoon in),小於時縮小(zoom out)
BackgroundColorSpan(int color) —— 背景著色,引數是顏色數值,可以直接使用android.graphics.Color裡面定義的常量,或是用Color.rgb(int, int, int)
ForegroundColorSpan(int color) —— 前景著色,也就是字的著色,引數與背景著色一致
TypefaceSpan(String family) —— 字型,引數是字型的名字比如“sans”, “sans-serif”等
StyleSpan(Typeface style) —— 字型風格,比如粗體,斜體,引數是android.graphics.Typeface裡面定義的常量,如Typeface.BOLD,Typeface.ITALIC等等。StrikethroughSpan—-如果設定了此風格,會有一條線從中間穿過所有的字,就像被劃掉一樣
三、動手試試
比如實現下圖中TextView的樣式
**
仿照上面的寫法,程式碼很少就出來啦:
TextView tv = (TextView)view.findViewById(R.id.toast_text);
String str1 = "提交成功!\n積分";
String str2 = "+" + score1;
String str3 = "!稽核通過後再";
String str4 = "+" + score2;
SpannableStringBuilder builder = new SpannableStringBuilder(str1 + str2 + str3 + str4 + "!");
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")),
str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")),
(str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
tv.setText(builder);
##原文地址:
http://blog.csdn.net/u010983881/article/details/52383539?locationNum=2&fps=1
相關文章
- 聊天平臺原始碼,TextView部分文字變色原始碼TextView
- Android開發筆記——TextView文字設定不同顏色Android筆記TextView
- Android TextView 富文字之 android.text.style.xxxSpanAndroidTextView
- 全域性變數與區域性變數變數
- 區域性變數和全域性變數變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- Android 顏色漸變 屬性動畫Android動畫
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 教你如何實現 Android TextView 文字輪播效果AndroidTextView
- 成員變數和區域性變數變數
- Python中的全域性變數和區域性變數Python變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- Android RecyclerView 區域性重新整理原理AndroidView
- js-js的全域性變數和區域性變數JS變數
- Android之TextView設定drawableRight等圖片文字間隔AndroidTextView
- Android入門教程 | TextView簡介(寬高、文字、間距)AndroidTextView
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Python中類變數、成員變數、區域性變數的區別Python變數
- Python閉包區域性變數問題Python變數
- C語言--靜態區域性變數C語言變數
- test函式中的區域性變數函式變數
- JavaScript文字迴圈變色效果JavaScript
- 【Java貓說】例項變數與區域性變數Java變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- JVM-棧幀之區域性變數表JVM變數
- 十二、變數作用域:區域性變數、全域性變數,函式版名片管理系統—新增函式文件變數函式
- input文字框焦點背景變色
- Android元件詳解—TextViewAndroid元件TextView
- android炫酷的textviewAndroidTextView
- 短影片app原始碼,Android TextView文字,刪除線以及下劃線APP原始碼AndroidTextView
- 【Android初級】使用TypeFace設定TextView的文字字型(附原始碼)AndroidTextView原始碼
- 類,物件,成員變數和區域性變數,匿名物件物件變數
- 函式之定義及全域性變數&區域性變數&風溼理論函式變數
- 為什麼要將區域性變數的作用域最小化?變數
- 強大的CSS:var變數的區域性作用域(繼承)特性CSS變數繼承
- Android 高亮關鍵字TextViewAndroidTextView