您好,登錄后才能下訂單哦!
string.xml是一個字符串資源,為程序提供了可格式化和可選樣式的字符串。
一般的字符串定義:
- <string name="hello_kitty">Hello kitty</string>
資源引用
在xml中:@string/hello_kitty
在java中:R.string.hello_kitty
一、當字符串有引號時
- <string name="good_example">"This'll work"</string>
- <string name="good_example_2">This\'ll also work</string>
- <string name="bad_example">This doesn't work</string>
- <string name="bad_example_2">XML encodings don't work</string>
如果字符串中有單引號,則要將整個字符串用雙引號包起來,或者使用轉義\'
二、當字符串需要用String.format格式化時
- <string name="hello_kitty">Hello %1$s kitty</string>
%1$s : 1表示占第一位,s表示字符串,d表示數字
java代碼:
- String format=String.format(R.string.hello_kitty,"your");
三、當字符串有html標記時
<b>kitty</b> 加粗
- <string name="hello_kitty">Hello <b>kitty</b></string>
java代碼:
- Resources res = getResources();
- String kitty = res.getString(R.string.hello_kitty);
- //textView.setText(kitty);
四、當字符串又需要格式化,又有樣式的時候
- <string name="hello_kitty"><i>Hello</i><b> %1$s kitty</b>!</string>
上面是錯誤的寫法,因為參考原文一段話
In this formatted string, a
<b>
element is added. Notice that the opening bracket is HTML-escaped, using the<
notation.所以我們需要這么寫
- <string name="hello_kitty"><i>Hello</i><b> %1$s kitty</b>!</string>
java代碼:
- String format = String.format(res.getString(R.string.hello_kitty),
- "your");
- Spanned html = Html.fromHtml(format);
- textView.setText(html);
Html.fromHtml()會解析所有html標記,但如果String.format()的參數中有html標記但又不想被Html解析
比如 <u>your</u>,就要對參數進行編碼
java代碼:
- Resources res = getResources();
- String encode = TextUtils.htmlEncode("<u>your</u>");
- String format = String.format(res.getString(R.string.hello_kitty),
- encode);
- Spanned html = Html.fromHtml(format);
- tv1.setText(html);
tip:
- Spanned html = Html.fromHtml(format);
- String htmlStr = Html.fromHtml(format).toString();
- //有樣式
- tv1.setText(html);
- //無樣式
- tv2.setText(htmlStr);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。