android 在同一個TextView中如何展現出不同的字體和顏色總結一下
1.主要是痛通過String.xml使用html標簽靜態配置然后動態引用
Html.fromHtml(getResources().getString(R.string.myHeadStr));
2.textView 動態設置
//創建一個 SpannableString對象 msp = new SpannableString("字體測試"); //指定區域設置字體格式;包括字體樣式、大小、顏色、背景顏色、下劃線、刪除線、上下標、鏈接等。 msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //SpannableString對象設置給TextView myTextView.setText(msp);
一 .靜態配置
方法1、使用 CDATA
例如(html標簽后續有簡單介紹)
%1$1.1f分 已成交%2$d單]]>
結果:
`評~分 已成交~單`
注意:中
size: 設置都沒有效果,只能通過標簽來設置
color:"blue","red"等關鍵字設置有效;“#999999”有效
方法2、轉義HTML標簽
%1$d斤
結果
~斤
注意:
轉義字符:不使用
size: 在中,size設置有效果,標簽有效
color:在中,"blue","red"等關鍵字設置有效;“#999999”無效
最后在代碼中設置
String content = getResources().getString(R.string.content))
//注意變量的使用
String str = String.format(content,125);
text.setText(Html.fromHtml(str));
二 動態設置
public class TextViewLinkActivity extends Activity {
TextView mTextView = null;
SpannableString msp = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView)findViewById(R.id.myTextView);
//創建一個 SpannableString對象
msp = new SpannableString("字體測試字體大小一半兩倍前景色背景色正常粗體斜體粗斜體下劃線刪除線x1x2電話郵件網站短信彩信地圖X軸綜合");
//設置字體(default,default-bold,monospace,serif,sans-serif)
msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
msp.setSpan(new TypefaceSpan("serif"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置字體大小(絕對值,單位:像素)
msp.setSpan(new AbsoluteSizeSpan(20), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
msp.setSpan(new AbsoluteSizeSpan(20,true), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二個參數boolean dip,如果為true,表示前面的字體大小單位為dip,否則為像素,同上。
//設置字體大小(相對值,單位:像素) 參數表示為默認字體大小的多少倍
msp.setSpan(new RelativeSizeSpan(0.5f), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //0.5f表示默認字體大小的一半
msp.setSpan(new RelativeSizeSpan(2.0f), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默認字體大小的兩倍
//設置字體前景色
msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設置前景色為洋紅色
//設置字體背景色
msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設置背景色為青色
//設置字體樣式正常,粗體,斜體,粗斜體
msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //正常
msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 20, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗體
msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //斜體
msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 24, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗斜體
//設置下劃線
msp.setSpan(new UnderlineSpan(), 27, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置刪除線
msp.setSpan(new StrikethroughSpan(), 30, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置上下標
msp.setSpan(new SubscriptSpan(), 34, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //下標
msp.setSpan(new SuperscriptSpan(), 36, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //上標
//超級鏈接(需要添加setMovementMethod方法附加響應)
msp.setSpan(new URLSpan("tel:4155551212"), 37, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //電話
msp.setSpan(new URLSpan("mailto:webmaster@google.com"), 39, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //郵件
msp.setSpan(new URLSpan("http://www.baidu.com"), 41, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //網絡
msp.setSpan(new URLSpan("sms:4155551212"), 43, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //短信 使用sms:或者smsto:
msp.setSpan(new URLSpan("mms:4155551212"), 45, 47, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //彩信 使用mms:或者mmsto:
msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //地圖
//設置字體大小(相對值,單位:像素) 參數表示為默認字體寬度的多少倍
msp.setSpan(new ScaleXSpan(2.0f), 49, 51, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默認字體寬度的兩倍,即X軸方向放大為默認字體的兩倍,而高度不變
//SpannableString對象設置給TextView
myTextView.setText(sp);
//設置TextView可點擊
myTextView.setMovementMethod(LinkMovementMethod.getInstance())
}
}
用來標識在 Span 范圍內的文本前后輸入新的字符時是否把它們也應用這個效果。分別有
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。
三 相關屬性
html標簽
**定義鏈接內容**
定義粗體文字 **b** 是blod的縮寫
定義大字體的文字
引用塊標簽 屬性:[Common](http://www.dreamdu.com/xhtml/attribute_collections/#common) -- 一般屬性 [cite](http://www.dreamdu.com/xhtml/attribute_cite/) -- 被引用內容的URI
定義換行 表示引用的URI 定義標簽 **dfn** 是defining instance的縮寫強調標簽 **em** 是emphasis的縮寫
定義斜體文字
[站外圖片上傳中……(1)]
段落標簽,里面可以加入文字,列表,表格等
定義小字體的文字
定義刪除線樣式的文字 不符合標準網頁設計的理念,不贊成使用. strike是strikethrough的縮寫重點強調標簽 下標標簽 **sub** 是subscript的縮寫 上標標簽 **sup** 是superscript的縮寫
定義monospaced字體的文字 不贊成使用. 此標簽對中文沒意義 tt是teletype or monospaced text style的意思
定義帶有下劃線的文字 u是underlined text style的意思
轉義符
XML只有5個轉義符:< >& " '不合法的XML字符必須被替換為相應的實體。 如果在XML文檔中使用類似"
媽蛋,這里的轉義字符預覽有效 ,已發布就被轉義了
< < 小于號
> > 大于號
& & 和
' ' 單引號
" " 雙引號
實體必須以符號"&"開頭,以符號";"結尾。
注意: 只有"
變量
%n$ms:代表輸出的是字符串,n代表是第幾個參數,設置m的值可以在輸出之前放置空格
%n$md:代表輸出的是整數,n代表是第幾個參數,設置m的值可以在輸出之前放置空格,也可以設為0m,在輸出之前放置m個0
%n$mf:代表輸出的是浮點數,n代表是第幾個參數,設置m的值可以控制小數位數,如m=2.2時,輸出格式為00.00