轉載自: http://www.cnblogs.com/over140/archive/2011/10/20/2218560.html#Formating_and_Styling 前言 本章內 容為Android開發(fā)者指南的Framework Topics/Application Resources/Resource Types/String章節(jié),譯為"字符串資源",版本為Android 4.0 r1,翻譯來自:"呆呆大蝦",歡迎訪問他的微博:"http://weibo.com/popapa",再次感謝"呆呆大蝦" !期待你一起參與翻譯Android的相關資料,聯(lián)系我over140@gmail.com。
Resources Types - String 譯者署名: 呆呆大蝦 版本:Android 4.0 r1
原文 http://developer./guide/topics/resources/style-resource.html
字符串資源 string資源為應用程序提供字符串文本,并可附帶文本樣式和格式。有以下三種類型的string資源可供應用程序使用: 提供單個字符串的XML資源。 提供字符串數(shù)組的XML資源。 保存單詞或詞組各種數(shù)量形式(單數(shù)/復數(shù))下的字符串XML資源。 所有字符串都能應用各種樣式標記及格式參數(shù)。樣式化和格式化串的信息請參閱章節(jié)格式化和樣式化。
能被應用程序或者其他資源文件(比如layout XML)引用的單個字符串。 注意:字符串是簡單類型資源,是用名稱(name)(而非XML文件名)來直接引用的。因此,在一個XML文件里,可以把字符串資源和其他簡單類型資源一起放在一個<resources>元素下。
文件位置 res/values/filename.xml 文件名可隨意指定。<string>元素的name將被用作資源ID。
編譯后資源的數(shù)據(jù)類型 指向
資源引用 Java代碼::R.string.string_name XML代碼:@string/string_name
語法
元素 <resources> 必填項。必須是根元素。 無屬性。
<string> 可以包含樣式標記的字符串。注意須對單引號或雙引號進行轉義。更多信息請參閱下文格式化和樣式化。
屬性: name String類型。字符串的名稱。此名稱將作為資源ID用于引用此字符串。
示例 保存在res/values/strings.xml 的XML文件:
以下布局(layout)XML將字符串資源用于View:
以下應用程序代碼讀取一個字符串資源:
可以用
可被應用程序引用的字符串數(shù)組。 注意:字符串數(shù)組是簡單類型資源,是用名稱(而非XML文件名)來直接引用的。因此,在一個XML文件里,可以把字符串數(shù)組資源和其他簡單類型資源一起放入一個<resources>元素下。
文件位置 res/values/filename.xml 文件名可隨意指定。<string-array>元素的名字name將被用作資源ID。
編譯后資源的數(shù)據(jù)類型 指向
資源引用 Java代碼: R.array.string_array_name
語法
元素 <resources> 必填項。必須是根元素。 無屬性。
<string-array> 定義一個字符串數(shù)組。包含了一個或多個<item>元素。
屬性: Name String類型。字符串數(shù)組的名稱。此名稱將作為資源ID用于引用此數(shù)組。
<item> 一個字符串,可以包含樣式標識??梢允菍ζ渌址Y源的引用。必須作為<string-array>元素的子元素存在。注意對單引號和雙引號須進行轉義。有關如何正確地樣式化及格式化字符串,請參閱下文格式化和樣式化。 無屬性。
示例 保存在res/values/strings.xml 的XML文件:
以下程序代碼返回字符串數(shù)組:
Quantity Strings(復數(shù)) 不同的語言對數(shù)量進行描述的語法規(guī)則也不同。比如在英語里,數(shù)量1是個特殊情況,我們寫成“1 book”,但其他任何數(shù)量都要寫成“n books”。這種單復數(shù)之間的區(qū)別是很普遍的,不過其他語言會有更好的區(qū)分方式。Android支持的全集包括zero、one、 two、few、many和other。 決定選擇和使用某種語言和復數(shù)的規(guī)則是非常復雜的,所以Android提供了諸如getQuantityString()的方法來選擇合適的資源。 注意,要按照語法規(guī)則來建立可選項。在英語里,即使數(shù)量為0,字符串零(zero)也不需要建立。因為0在英語語法表達上和2沒有區(qū)別,和其他除1以外的任何數(shù)字都沒有差別("zero books", "one book", "two books",等等)。 不要被“two聽起來似乎只能用于數(shù)量2” 樣的事誤導。某語言可能需要2、12、102(等等)和1一樣形式表示,而又與其他數(shù)的形式都不同。請依靠翻譯人員來了解一下實際語言中的差別。 如果和應用程序的風格一致,常可以用諸如“Books: 1”的模糊數(shù)量形式來避免使用數(shù)量字符串。這會讓你和翻譯人員都輕松些。 注意:復數(shù)字符串是簡單類型資源,是用名稱(name)(而不是XML文件名)來直接引用的。因此,在一個XML文件里,可以把復數(shù)字符串資源和其他簡單類型資源一起放在一個<resources>元素下。
文件位置 res/values/filename.xml 文件名可隨意指定。<plurals>元素的名字name將被用作資源ID。
資源引用 Java代碼::R.plurals.plural_name
語法
元素 <resources> 必填項。必須是根元素。 無屬性。
<plurals> 一個字符串集,每個數(shù)量表示提供一個字符串。包含一個或多個<item>元素。
屬性: name String類型。字符串對的名稱。此名稱將作為資源ID。 <item> 一個單數(shù)或復數(shù)形式的字符串。可以是對其他字符串資源的引用。必須作為<plurals>元素的子元素存在。注意須對單引號和雙引號進行轉義。有關如何正確地樣式化及格式化字符串,請參閱下文格式化和樣式化。
屬性: quantity 關鍵字。 表示要使用此字符串的數(shù)量值。以下是合法的值(括號內列出部分語言要求):
示例 存放在res/values/strings.xml 的XML文件:
存放在res/values-pl/strings.xml 的XML文件:
Java代碼:
在使用getQuantityString()方法時,如果字符串包含數(shù)字格式化串,則需要傳遞2個count參數(shù)。例如:對于字符串“%d songs found”,第一個count參數(shù)選擇合適的復數(shù)字符串,第二個count參數(shù)插入占位符%d中。如果復數(shù)字符串資源不包含格式化信息,就不需要給getQuantityString()傳遞第三個參數(shù)。
格式化和樣式化 關于如何格式化和樣式化字符串資源,下面這些比較重要的地方應該了解。
單引號和雙引號的轉義 如果字符串里包含單引號或雙引號,必須進行轉義,或者把整個串封閉在與當前引號不同的成對的引號內。下面是一些有效或無效的字符串示例:
字符串的格式化 如果需要使用String.format(String, Object...)格式化字符串,可以把格式化參數(shù)放在字符串(string)資源里。比如存在以下資源:
此例中存在兩個參數(shù):%1$s是個字符串,%2$d 是個數(shù)字。則在應用程序中可以用如下方式用參數(shù)來格式化字符串:
用HTML標記來樣式化 可以用HTML 標記來為字符串加入樣式。例如:
支持以下HTML元素: · <b>文本加粗bold。 · <i>文本變斜體italic。 · <u>文本加下劃線underline。 有時可能要創(chuàng)建一個樣式化的文本資源,并可作為格式化串使用。通常這不能生效,因為String.format(String, Object...)方法會去除字符串內的所有的樣式信息。解決方法是寫入一段轉義后的HTML標記,然后在格式化后再用fromHtml(String)恢復出這些樣式。例如: 1. 將樣式化的文本資源存儲為轉義后的HTML字符串:
在這個格式化字符串里,加入了一個<b>元素。注意左尖括號是用標記<轉義過的HTML。 2. 然后,按照通常方式格式化字符串,并調用fromHtml(String) 把HTML文本轉換成帶樣式的文本。
因為fromHtml(String)方法會格式化所有的HTML內容,所以要確保用htmlEncode(String)對帶格式化文本的字符串內所有可能的HTML字符進行轉義。比如,如果要把可能包含諸如“<”或“&”等字符的串作為參數(shù)傳給String.format(),那么必須在格式化之前對這些字符進行轉義。格式化后,再把字符串傳入fromHtml(String),這些特殊字符就能還原成本來意義了。例如:
|
|