Android字符串及字符串資源的格式化

爲何要寫這一篇隨筆呢?最近作項目的過程當中,遇到不少頁面在要顯示文本時,有一部分是固定的文本,有一部分是動態獲取的,而且格式各式各樣。一開始採起比較笨的辦法,把他拆分紅一個個文本控件,而後對不一樣的控件採用不一樣的樣式。這樣作效率html

很低,而且文本之間的對齊是個很大的問題,後來到網上尋求幫助,找到一些有關Android字符串和字符串資源格式化的文章,在此作一個總結。app

 

一.字符串格式化佈局

Java的String類給咱們提供了兩個重載的格式化字符串的方法,能夠經過佔位符的方式,向固定字符串中傳入參數。他們分別是:字體

format(String format, Object... args) 新字符串使用本地語言環境,制定字符串格式和參數生成格式化的新字符串。ui

format(Locale locale, String format, Object... args) 使用指定的語言環境,制定字符串格式和參數生成格式化的字符串。spa

例如:.net

字符串佔位符%s :System.out.println("Hi,%s", "王力")  輸出  Hi,王力code

十進制整形佔位符%d :System.out.println("我今年%d歲", 20)  輸出  我今年20歲orm

浮點型佔位符%f:System.out.println("荔枝的價格是 %f 元", 3.5)  輸出 荔枝的價格是3.5元xml

還有其餘字符型,整形,日期格式等等格式化方法,再次就不一一舉例了。

 

二.帶HTML標籤的字符串格式化

當咱們須要對一段文字的部分文字進行字體顏色,字形,字體風格設置時,咱們可使用HTML標籤,而後在輸出的時候,經過Html.from方法解析爲html字符串。

例如:

String str = "後面的文字是加粗的紅色文字:" + "<font color='#ff0000'><b>加粗紅色文字</b></font>";

在文本控件輸出的時候,咱們須要解析一下

CharseQuence  cq=Html.from(str);

textView.setText(cq);

第一種情形和第二種情形能夠結合起來使用:

String str = "後面的文字是加粗的紅色文字:" + "<font color='#ff0000'><b>%s</b></font>";

String str2=String.format(str,"紅色加粗文字");

輸出與上面同樣.

 

三.字符串資源的格式化

咱們在字符串資源中一樣能夠經過佔位符來給字符串傳入參數,不過與第一種方式相比,佔位符的格式略有不一樣

咱們使用%[index]$[type]格式進行標記,index標記替換資源中第index個資源對應的位置,type則標示所要替換的資源的類型(s表示資源爲字符串格式)

例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, my name is %1$s!</string>
    <string name="app_name">MyString</string>
</resources>
TextView mytext = (TextView)findViewById(R.id.mystring);
String myname = getString(R.string.hello);
myname = String.format(myname, "yinghui");
mytext.setText(myname);

若是須要同時傳入多個參數,則須要改變index,順序一一對應。例如%1$s  %2$s等等

 

四.帶HTML標籤的字符串資源的格式化

 因爲Android開發中的字符串資源是保存在XML文件中,由於Html中的<, >,&有特殊含義,(前兩個字符用於連接籤,&用於轉義),不能直接使用。使用這三個字符時,應使用它們的轉義序列。

例如:

咱們須要在XML中保存這個字符串<b>我是加粗文字</b> 須要將<轉義爲&lt;或者&#60; ,須要將>轉義爲&gt;或者&#62(這裏也能夠不轉義)

代碼:

<string name="format2">&lt;b&gt;我是加粗文字&lt;/b&gt;</string>

須要說明的是:
    a. 轉義序列各字符間不能有空格;
    b. 轉義序列必須以「;」結束;
    c. 單獨的&不被認爲是轉義開始。
    d. 區分大小寫 

常見的轉義字符見下表:

字符 實體名字 十進制字符編號
& &amp; &#38;
< &lt; &#60;
> &gt; &#62;
單引號 &apos &#39;
" &quot; &#34;
空格 &nbsp &#160;
版權符 &copy &#169;
註冊符 &reg &#174;

 

 

 

 

 

 

 

 

 

 

使用方法

String str=getString(R.string.format2);
CharseQuence cq=Html.from(str);
textView.setText(cq);

 

經過靈活運用以上字符串格式化的技巧,咱們能夠加快開發的效率,提升界面佈局的美觀程度。

 

參考資料:

http://blog.csdn.net/wsywl/article/details/6555959

http://blog.163.com/djx421%40126/blog/static/4885513620104212950216/

http://www.cnblogs.com/hyd309/p/3549076.html

相關文章
相關標籤/搜索