android 在同一個(gè)TextView中如何展現(xiàn)出不同的字體和顏色總結(jié)一下
1.主要是痛通過(guò)String.xml使用html標(biāo)簽靜態(tài)配置然后動(dòng)態(tài)引用
Html.fromHtml(getResources().getString(R.string.myHeadStr));
2.textView 動(dòng)態(tài)設(shè)置
//創(chuàng)建一個(gè) SpannableString對(duì)象 msp = new SpannableString("字體測(cè)試"); //指定區(qū)域設(shè)置字體格式绊起;包括字體樣式酷师、大小、顏色、背景顏色、下劃線、刪除線、上下標(biāo)、鏈接等陨倡。 msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //SpannableString對(duì)象設(shè)置給TextView myTextView.setText(msp);
一 .靜態(tài)配置
方法1、使用 CDATA
<string name="grader"><Data><![CDATA[ ***+內(nèi)容***]]></Data></string>
例如(html標(biāo)簽后續(xù)有簡(jiǎn)單介紹)
<string name="grader"><Data><![CDATA[評(píng)<font size="30" height = "30dp" color="#ff0000"><strong><u><b>%1$1.1f</b></u></strong></font>分 已成交<font color="#00ff00"><b>%2$d</b></font>單]]></Data></string>
結(jié)果:
`評(píng)~分 已成交~單`
注意:<font size="20" color="#999999"></font>中
- size: 設(shè)置都沒(méi)有效果许布,只能通過(guò)標(biāo)簽<big><small>來(lái)設(shè)置
- color:"blue","red"等關(guān)鍵字設(shè)置有效兴革;“#999999”有效
方法2、轉(zhuǎn)義HTML標(biāo)簽
<為‘<’轉(zhuǎn)義符,如果不使用則只能在xml里配置有效android:text="@string/amount",若動(dòng)態(tài)設(shè)置則無(wú)效
<string name="amount"><b><u>%1$d</u></b>斤</string>
結(jié)果
~斤
注意:
- 轉(zhuǎn)義字符:不使用<等轉(zhuǎn)義字符時(shí)杂曲,只能在android:text=""設(shè)置文字庶艾,動(dòng)態(tài)設(shè)置無(wú)效。
- size: 在<font size="20" color="#999999"></font>中擎勘,size設(shè)置有效果咱揍,標(biāo)簽<big><small>有效
- color:在<font size="20" color="blue"></font>中,"blue","red"等關(guān)鍵字設(shè)置有效;“#999999”無(wú)效
最后在代碼中設(shè)置
String content = getResources().getString(R.string.content))
//注意變量的使用
String str = String.format(content,125);
text.setText(Html.fromHtml(str));
二 動(dòng)態(tài)設(shè)置
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);
//創(chuàng)建一個(gè) SpannableString對(duì)象
msp = new SpannableString("字體測(cè)試字體大小一半兩倍前景色背景色正常粗體斜體粗斜體下劃線刪除線x1x2電話郵件網(wǎng)站短信彩信地圖X軸綜合");
//設(shè)置字體(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);
//設(shè)置字體大信锒(絕對(duì)值,單位:像素)
msp.setSpan(new AbsoluteSizeSpan(20), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
msp.setSpan(new AbsoluteSizeSpan(20,true), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二個(gè)參數(shù)boolean dip煤裙,如果為true,表示前面的字體大小單位為dip噪漾,否則為像素硼砰,同上。
//設(shè)置字體大行琅稹(相對(duì)值,單位:像素) 參數(shù)表示為默認(rèn)字體大小的多少倍
msp.setSpan(new RelativeSizeSpan(0.5f), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //0.5f表示默認(rèn)字體大小的一半
msp.setSpan(new RelativeSizeSpan(2.0f), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默認(rèn)字體大小的兩倍
//設(shè)置字體前景色
msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置前景色為洋紅色
//設(shè)置字體背景色
msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置背景色為青色
//設(shè)置字體樣式正常题翰,粗體,斜體诈胜,粗斜體
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); //粗斜體
//設(shè)置下劃線
msp.setSpan(new UnderlineSpan(), 27, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設(shè)置刪除線
msp.setSpan(new StrikethroughSpan(), 30, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設(shè)置上下標(biāo)
msp.setSpan(new SubscriptSpan(), 34, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //下標(biāo)
msp.setSpan(new SuperscriptSpan(), 36, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //上標(biāo)
//超級(jí)鏈接(需要添加setMovementMethod方法附加響應(yīng))
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); //網(wǎng)絡(luò)
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); //地圖
//設(shè)置字體大斜稀(相對(duì)值,單位:像素) 參數(shù)表示為默認(rèn)字體寬度的多少倍
msp.setSpan(new ScaleXSpan(2.0f), 49, 51, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默認(rèn)字體寬度的兩倍,即X軸方向放大為默認(rèn)字體的兩倍焦匈,而高度不變
//SpannableString對(duì)象設(shè)置給TextView
myTextView.setText(sp);
//設(shè)置TextView可點(diǎn)擊
myTextView.setMovementMethod(LinkMovementMethod.getInstance())
}
}
用來(lái)標(biāo)識(shí)在 Span 范圍內(nèi)的文本前后輸入新的字符時(shí)是否把它們也應(yīng)用這個(gè)效果血公。分別有
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括括授,后面不包括)坞笙、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括岩饼,后面包括)荚虚、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。
三 相關(guān)屬性
- html標(biāo)簽
<a href="..."> **定義鏈接內(nèi)容**
<b>
定義粗體文字 **b** 是blod的縮寫
<big> 定義大字體的文字
<blockquote> 引用塊標(biāo)簽 屬性:[Common](http://www.dreamdu.com/xhtml/attribute_collections/#common) -- 一般屬性 [cite](http://www.dreamdu.com/xhtml/attribute_cite/) -- 被引用內(nèi)容的URI
<br> 定義換行 <cite> 表示引用的URI <dfn> 定義標(biāo)簽 **dfn** 是defining instance的縮寫
<div align="...">
<em> 強(qiáng)調(diào)標(biāo)簽 **em** 是emphasis的縮寫
<font size="..." color="..." face="...">
<h1>
<i> 定義斜體文字
[站外圖片上傳中……(1)]
<p> 段落標(biāo)簽,里面可以加入文字,列表,表格等
<small> 定義小字體的文字
<strike> 定義刪除線樣式的文字 不符合標(biāo)準(zhǔn)網(wǎng)頁(yè)設(shè)計(jì)的理念,不贊成使用. strike是strikethrough的縮寫
<strong> 重點(diǎn)強(qiáng)調(diào)標(biāo)簽 <sub> 下標(biāo)標(biāo)簽 **sub** 是subscript的縮寫 <sup> 上標(biāo)標(biāo)簽 **sup** 是superscript的縮寫
<tt> 定義monospaced字體的文字 不贊成使用. 此標(biāo)簽對(duì)中文沒(méi)意義 tt是teletype or monospaced text style的意思
<u> 定義帶有下劃線的文字 u是underlined text style的意思
- 轉(zhuǎn)義符
XML只有5個(gè)轉(zhuǎn)義符:< >& " &apos
;不合法的XML字符必須被替換為相應(yīng)的實(shí)體籍茧。 如果在XML文檔中使用類似"<" 的字符, 那么解析器將會(huì)出現(xiàn)錯(cuò)誤版述,因?yàn)榻馕銎鲿?huì)認(rèn)為這是一個(gè)新元素的開始。
媽蛋寞冯,這里的轉(zhuǎn)義字符預(yù)覽有效 渴析,已發(fā)布就被轉(zhuǎn)義了
< < 小于號(hào)
> > 大于號(hào)
& & 和
' ' 單引號(hào)
" " 雙引號(hào)
實(shí)體必須以符號(hào)"&"開頭,以符號(hào)";"結(jié)尾吮龄。
注意: 只有"<" 字符和"&"字符對(duì)于XML來(lái)說(shuō)是嚴(yán)格禁止使用的俭茧。剩下的都是合法的,為了減少出錯(cuò)漓帚,使用實(shí)體是一個(gè)好習(xí)慣母债。
- 變量
%n$ms:代表輸出的是字符串,n代表是第幾個(gè)參數(shù),設(shè)置m的值可以在輸出之前放置空格
%n$md:代表輸出的是整數(shù)毡们,n代表是第幾個(gè)參數(shù)迅皇,設(shè)置m的值可以在輸出之前放置空格,也可以設(shè)為0m,在輸出之前放置m個(gè)0
%n$mf:代表輸出的是浮點(diǎn)數(shù)衙熔,n代表是第幾個(gè)參數(shù)登颓,設(shè)置m的值可以控制小數(shù)位數(shù),如m=2.2時(shí)红氯,輸出格式為00.00