關于Android strings.xml-你應該了解的幾個原則

ki484923 7年前發布 | 12K 次閱讀 Java 安卓開發 Android開發 移動開發

但是說不定什么時候你使用不同的string了,這時你就需要重新創建兩個新的string,而且還要修改java代碼。如果一開始你就使用兩個string的話,你需要修改的就只有strings.xml文件。

res/values/strings.xml

2. 你永遠不知道你的應用要支持哪些語言。在某一種語言中-或許你可以在不同的上下文中使用同一個詞語,但是在另一種語言中很可能不同的上下文需要不同的詞語。

res/values/strings.xml

res/values-UA/strings.xml

注意這里英語版本的strings.xml中,R.string.download_file_yes 和 R.string.terms_of_use_yes兩個string都是同一個單詞- “Yes”。

但是在烏克蘭語版本中R.string.download_file_yes用的是 “Гаразд”,而 R.string.terms_of_use_yes用的是“Так”。

分離

同一頁面的string用前綴和注釋分離

res/values/strings.xml

為每個頁面創建單獨的 strings.xml 文件

如果你想為每個頁面創建一個 strings.xml文件,可以這樣命名:settings-strings.xml, profile-strings.xml。但是一個app通常有10到20個頁面。所以每一個語言目錄下都會有10到20個strings.xml文件,個人認為這帶來的是混亂。

Format格式化

使用 Resources#getString(int id, Object… formatArgs) 來格式化 strings

永遠不要使用+號來拼接字符串,因為不同的語言語序是不同的。

res/values/strings.xml

java code

正確的方式是使用 Resources#getString(int id, Object… formatArgs)

res/values/strings.xml

res/values-UA/strings.xml

java code

復數

使用 Resources#getQuantityString (int id, int quantity) 來處理復數

永遠不要在java代碼中解決復數問題,因為不同語言中復數的語法規則是不同的。

res/values/strings.xml

java code

正確的方式是使用 Resources#getQuantityString (int id, int quantity )。

res/values/strings.xml

注:關于 getQuantityString方法請看: Android Quantity Strings 的 getQuantityString方法取值問題  

java code

詞語高亮顯示

使用 html文本來高亮靜態詞語

如果你想改變TextView中的某些單詞的顏色- ForegroundColorSpan 并不總是最佳選擇,因為它的高亮是通過索引來完成的,而且在多語言下不安全。最好在 strings.xml文件中使用html的font color標簽。

假設你有一個“Discover and play games.” 的文本。你想讓單詞 “Discover” 和 “play” 顯示成藍色。

res/values/strings.xml

java code

注:其實本文的很多觀點和這篇文章不謀而合。

 

來自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0303/7179.html

 

 本文由用戶 ki484923 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!