Android strings.xml资源文件 使用技巧
生活随笔
收集整理的這篇文章主要介紹了
Android strings.xml资源文件 使用技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:XML轉義字符
在strings.xml文件中定義字符串時,特殊字符有時需要使用轉義字符代替,如:字符之間的空格用 Space 鍵是能顯示出效果的的,但是字符后面如果需要添加空格,直接 Space 鍵是不管用的,此時 空格應該用? 來表示(注意有分號),例如: <string name="top10_item_title">第%1$s名:   %2$s號%3$s</string>以下為XML標志符的數字和字符串轉義符? "???? (" 或 ")?
'???? (' 或 ')?
&???? (& 或 &)?
lt(<) (< 或 <)?
gt(>) (> 或 >)? @ ? ?(@) 版權符號? ? ??(©)
下面的字符在 [XML]中被定義為 空白(whitespace)字符:?
空格 ( )?
Tab (	)?
回車 (
)?
換行 (
)?
strings.xml文件定義%符號,需要用%%來表示;
<string name="hello">大家好,歡迎來到eoeandroid社區。\nwelcome to here!</string>? ? ? ? 字體換行的形式輸出
如遇到如下錯誤的時候說明你需要在單引號簽名加轉義字符(\):?
Description Resource Path Location Type error: Apostrophe not preceded by \ (in Search' Titles) strings.xml?
只要將定義的字符串中的單引號('), 修改為(\')即可?
二:變量文本($s)提示(本地化數據交換的格式標準_xliff)
如:<string name="top10_item_title_data_vote">得票: %1$s   得票比例: %2$s</string> %1表示第一個變量的位置,%2表示第二個變量的位置,以此類推,.......%n表示第n個變量的位置; $s代表字符串類型; 在代碼中使用如下:
String.format(getString(R.string.top10_item_title_data_vote), "字符串1","字符串2");
如遇到如下錯誤提示:
Multiple annotations found at this line:?
- error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false"?
attribute??
- error: Unexpected end tag string?
這是由于新的SDK(雖然從沒用過老的)采用了新版本的aapt(Android項目編譯器), 這個版本的aapt編譯起來會比老版本更加的嚴格, 在Android最新的開發文檔中描述String的部分,已經說明了如何去設置 %s 等符號, 可以點擊去看.?
簡單解決方法就是:把%s之類的變量格式替換成%1$s, %1表示第一個位置的變量, $s表示為字符串類型?
三:Android通過文件名引用資源文件
使用方法: <span style="font-size:12px;">public int getIdentifier (String name, String defType, String defPackage)</span>
說明:name表示:資源文件名字; ? defType表示資源類型,如"string"、"drawable"等; ?defPackage表示應用的包名;
使用案例如下:
如需要根據具體條件,使用不同的圖片:
int index = 1; imageView.setImageResource(getResources().getIdentifier("image_" + index, "drawable", mActivity.getPackageName()));
注意:如果使用imageView.setBackgroundResource....,則設置無效,路過的高手知道為什么請指教!
附件:部分轉移字符串
其他字符
| 字符 | 十進制 | 轉義字符 | 字符 | 十進制 | 轉義字符 | 字符 | 十進制 | 轉義字符 |
| ? | ¡ | ¡ | á | Á | Á | á | á | á |
| ¢ | ¢ | ¢ | ? | Â | ˆ | a | â | â |
| £ | £ | £ | ? | Ã | Ã | ? | ã | ã |
| ¤ | ¤ | ¤ | ? | Ä | Ä | ? | ä | ä |
| ¥ | ¥ | ¥ | ? | Å | ˚ | ? | å | å |
| | | ¦ | ¦ | ? | Æ | Æ | ? | æ | æ |
| § | § | § | ? | Ç | Ç | ? | ç | ç |
| ¨ | ¨ | ¨ | è | È | È | è | è | è |
| ? | © | © | é | É | É | é | é | é |
| a | ª | ª | ê | Ê | Ê | ê | ê | ê |
| ? | « | « | ? | Ë | Ë | ? | ë | ë |
| ? | ¬ | ¬ | ì | Ì | Ì | ì | ì | ì |
| \x7f | ­ | ­ | í | Í | Í | í | í | í |
| ? | ® | ® | ? | Î | Î | ? | î | î |
| ˉ | ¯ | ¯ | ? | Ï | Ï | ? | ï | ï |
| ° | ° | ° | D | Ð | Ð | e | ð | &ieth; |
| ± | ± | ± | ? | Ñ | Ñ | ? | ñ | ñ |
| 2 | ² | ² | ò | Ò | Ò | ò | ò | ò |
| 3 | ³ | ³ | ó | Ó | Ó | ó | ó | ó |
| ′ | ´ | ´ | ? | Ô | Ô | ? | ô | ô |
| μ | µ | µ | ? | Õ | Õ | ? | õ | õ |
| ? | ¶ | ¶ | ? | Ö | Ö | ? | ö | ö |
| · | · | · | × | × | × | ÷ | ÷ | ÷ |
| ? | ¸ | ¸ | ? | Ø | Ø | ? | ø | ø |
| 1 | ¹ | ¹ | ù | Ù | Ù | ù | ù | ù |
| o | º | º | ú | Ú | Ú | ú | ú | ú |
| ? | » | » | ? | Û | Û | ? | û | û |
| ? | ¼ | ¼ | ü | Ü | Ü | ü | ü | ü |
| ? | ½ | ½ | Y | Ý | Ý | y | ý | ý |
| ? | ¾ | ¾ | T | Þ | Þ | t | þ | þ |
| ? | ¿ | ¿ | ? | ß | ß | ? | ÿ | ÿ |
| à | À | À | à | à | à | ? |
四:注意事項
Android開發中,使用TextView設置換行時,有如下幾種情況: 1.如果在strings.xml文件中設置string值為:"aaaa\nbbbb",TextView可以顯示為: aaaa bbbb 2.如果在代碼中直接設置setText("aaaa\nbbbb"),也可以顯示為: aaaa bbbb 3.如果將"aaaa\nbbbb"值傳入到一個數據封裝類如Person的字符串name屬性字段中,在代碼中設置setText(persion.getName())時,則顯示為: aaaa\nbbbb 第三點就是問題所在,不能顯示換行! 問題分析:出現了“aaaa\nbbbb”這樣的顯示,說明TextView設置了“aaaa\\nbbbb”,這里多了一個“\”,對象所攜帶的字符串的轉移字符被消除了。
解決辦法:
在setText顯示的時候,將對象中得到的字符串中的“\\n”轉換成“\n”:
如:textview.setText(persion.getName().replace("\\n","\n"));
四:<xliff:g>標簽
在處理國際化問題時,有些String中的部分文字不需要翻譯,可以用<xliff:g>標簽注明。這樣做可以保證自己或他人瀏覽時對不需要翻譯的內容能夠一目了然,比如:<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="buy_kindle">我想買%s臺<xliff:g id="Kindle">Kindle</xliff:g></string>
總結
以上是生活随笔為你收集整理的Android strings.xml资源文件 使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.App瘦身经验总结
- 下一篇: android 锁屏显示消息格式,通知!