2011-10-22 207 views
11

我有幾個情況下,我字符串中的strings.xml是很長,有多條線路\n.如何編輯Android strings.xml文件中的多行字符串?

編輯做不過是很煩人的,因爲它是在Eclipse中長線。

是否有更好的方式來編輯它,因此它看起來像稍後將在textview中呈現,即換行符是換行符還是多行編輯模式中的文本?

+2

我不認爲你可以做到這一點。但是,如果在使用每個'\ n'時出現錯誤,應該看起來應該如此。另外,你可以在eclipse中使用'control + i'來組織文本。 – Jong

回答

13

兩種可能性:

1.使用源,盧克

XML允許在字符串字面換行符:

<string name="breakfast">eggs 
and 
spam</string> 

你只需要編輯XML代碼,而不是使用漂亮Eclipse GUI

2.使用實際文本文件

assets目錄中的所有內容均可用作應用程序代碼的輸入流。

您可以訪問資產的那些文件輸入流與AssetManager.open(),一個AssetManager實例與Resources.getAssets(),而且......你知道嗎,這裏是Java的典型極大冗長的代碼對於這樣一個簡單的任務:

View view; 

//before calling the following, get your main 
//View from somewhere and assign it to "view" 

String getAsset(String fileName) throws IOException { 
    AssetManager am = view.getContext().getResources().getAssets(); 
    InputStream is = am.open(fileName, AssetManager.ACCESS_BUFFER); 
    return new Scanner(is).useDelimiter("\\Z").next(); 
} 

的使用Scanneris obviously a shortcut米(

+0

+1,尤其是資產小費。適用於我的電子郵件模板。順便說一句,如果使用Guava,你可以使用'CharStreams.toString(new InputStreamReader(am.open(fileName),Charsets.UTF_8)'''將資源讀入字符串。 – Jonik

+0

第一個只適用於將整個字符串放在引號中的情況 – user3533716

10

當然,你可以把換行到XML,但不會給你換行,的strings.xml,在所有的XML文件,Newlines in string content are converted to spaces。因此,聲明

<string name="breakfast">eggs 
and 
spam</string> 

將在TextView中被渲染爲

eggs and spam 

。幸運的是,在源文件和輸出文件中有一個簡單的方法可以使用換行符 - 使用\ n代替您的預期輸出換行符,並在源文件中轉義真正的換行符。上面的聲明變得

<string name="breakfast">eggs\n 
and\n 
spam</string> 

其呈現爲

eggs 
and 
spam 
+0

不知道\ n \結尾處的額外斜槓是什麼?要獲得額外的白線,請使用: \ n \ n – Meanman

+0

如果將整個字符串放在引號中,xml中的新行將爲您提供換行符。但是,那麼xml縮進將在每行之前提供額外的空間。 – user3533716

2

您可以輕鬆地使用「」,甚至從出錯誤其他語言寫任何字:

<string name="Hello">"Hello world! سلام دنیا!" </string>

0

對於任何正在尋找工作解決方案的人都可以使XML String內容具有多行可維護性並在TextV中呈現多行瀏覽輸出,只需在的新行開頭輸入\n ...而不是在上一行的末尾。如前所述,XML資源內容中的一行或多行將被轉換爲一個空白空間。前導,尾隨和多個空白空間被忽略。我們的想法是將該空白空間放在上一行的末尾,並將\n置於下一行內容的開頭。下面是一個XML字符串例如:

<string name="myString"> 
    This is a sentence on line one. 
    \nThis is a sentence on line two. 
    \nThis is a partial sentence on line three of the XML 
    that will be continued on line four of the XML but will be rendered completely on line three of the TextView. 

    \n\nThis is a sentence on line five that skips an extra line. 
</string> 

這是在文本視圖渲染爲:

This is a sentence on line one. 
This is a sentence on line two. 
This is a partial sentence on line three of the XML that will be continued on line four of the XML but will be rendered completely on line three of the TextView. 

This is a sentence on line five that skips an extra line. 
相關問題