Как редактировать многострочные строки в файле Android strings.xml? - PullRequest
12 голосов
/ 22 октября 2011

У меня есть несколько случаев, когда моя строка в strings.xml довольно длинная и содержит несколько строк , выполненных с \n.

Однако редактирование довольно раздражает, поскольку в Eclipse это длинная строка.

Есть ли лучший способ отредактировать это, чтобы оно выглядело так, как будто оно будет представлено позже в текстовом просмотре , то есть разрывы строк как разрывы строк и текста в режиме многострочного редактирования?

Ответы [ 4 ]

14 голосов
/ 25 мая 2012

Две возможности:

1. Используйте источник, Люк

XML допускает буквальные символы новой строки в строках:

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

Вам просто нужно отредактировать XML-код, а не использовать изящный графический интерфейс Eclipse

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();
}

использование Scanner , очевидно, является ярлыком m (

11 голосов
/ 01 октября 2013

Конечно, вы можете вставлять новые строки в XML, но это не даст вам разрывы строк.В strings.xml , как и во всех файлах XML, Новые строки в строковом содержимом преобразуются в пробелы .Поэтому объявление

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

будет отображаться как

eggs and spam

в TextView.К счастью, есть простой способ иметь новые строки в источнике и в выходных данных - используйте \ n для предполагаемых выходных новых строк и избегайте реальных новых строк в источнике.Приведенное выше объявление становится

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

, которое отображается как

eggs
and
spam
5 голосов
/ 19 января 2018

Для тех, кто ищет рабочее решение, которое позволяет содержанию XML String иметь несколько строк для удобства сопровождения и отображать эти несколько строк в выходных данных TextView, просто поместите \n в начале новой строки ... не в конце предыдущей строки. Как уже упоминалось, одна или несколько новых строк в содержимом ресурса XML преобразуются в одно пустое пространство. Начальные, конечные и множественные пустые пробелы игнорируются. Идея состоит в том, чтобы поместить это пустое место в конец предыдущей строки и поставить \n в начале следующей строки содержимого. Вот пример XML String:

<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.
3 голосов
/ 12 августа 2015

Вы можете легко использовать "" и написать любое слово даже из других языков без ошибок:

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

...