關(guān)于Android strings.xml-你應(yīng)該了解的幾個(gè)原則
不要試圖重用
不同的頁面不要重用一個(gè)string。
1.假設(shè)你的登錄和注冊頁面都有一個(gè)加載對話框。因?yàn)槎加屑虞d界面所以你決定使用同一個(gè)string-R.string.loading。
但是說不定什么時(shí)候你使用不同的string了,這時(shí)你就需要重新創(chuàng)建兩個(gè)新的string,而且還要修改java代碼。如果一開始你就使用兩個(gè)string的話,你需要修改的就只有strings.xml文件。
2. 你永遠(yuǎn)不知道你的應(yīng)用要支持哪些語言。在某一種語言中-或許你可以在不同的上下文中使用同一個(gè)詞語,但是在另一種語言中很可能不同的上下文需要不同的詞語。
注意這里英語版本的strings.xml中,R.string.download_file_yes 和 R.string.terms_of_use_yes兩個(gè)string都是同一個(gè)單詞- “Yes”。
但是在烏克蘭語版本中R.string.download_file_yes用的是 “Гаразд”,而 R.string.terms_of_use_yes用的是“Так”。
分離
同一頁面的string用前綴和注釋分離
為每個(gè)string添加頁面前綴,幫助你立即識(shí)別出一個(gè)string屬于哪個(gè)頁面。
干凈的strings.xml文件可以幫助你輕松維護(hù)與翻譯成不同的語言-一個(gè)一個(gè)頁面的來。
為每個(gè)頁面創(chuàng)建單獨(dú)的strings.xml 文件
如果你想為每個(gè)頁面創(chuàng)建一個(gè) strings.xml文件,可以這樣命名:settings-strings.xml, profile-strings.xml。但是一個(gè)app通常有10到20個(gè)頁面。所以每一個(gè)語言目錄下都會(huì)有10到20個(gè)strings.xml文件,個(gè)人認(rèn)為這帶來的是混亂。
Format格式化
使用 Resources#getString(int id, Object… formatArgs) 來格式化 strings
永遠(yuǎn)不要使用+號(hào)來拼接字符串,因?yàn)椴煌恼Z言語序是不同的。
正確的方式是使用Resources#getString(int id, Object… formatArgs)。
復(fù)數(shù)
使用 Resources#getQuantityString (int id, int quantity) 來處理復(fù)數(shù)
永遠(yuǎn)不要在java代碼中解決復(fù)數(shù)問題,因?yàn)椴煌Z言中復(fù)數(shù)的語法規(guī)則是不同的。
正確的方式是使用Resources#getQuantityString (int id, int quantity)。
注:關(guān)于getQuantityString方法請看:Android Quantity Strings 的 getQuantityString方法取值問題
詞語高亮顯示
使用html文本來高亮靜態(tài)詞語
如果你想改變TextView中的某些單詞的顏色- ForegroundColorSpan并不總是***選擇,因?yàn)樗母吡潦峭ㄟ^索引來完成的,而且在多語言下不安全。***在 strings.xml文件中使用html的font color標(biāo)簽。
假設(shè)你有一個(gè)“Discover and play games.” 的文本。你想讓單詞 “Discover” 和 “play” 顯示成藍(lán)色。










































