Как редактировать многострочные строки в файле strings.xml в Android?

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

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

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

Ответ 1

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

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

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

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

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

2. Использовать фактические текстовые файлы

Все внутри каталога assets доступно в качестве входного потока из кода приложения.

Вы можете получить доступ к этим входным потокам файлов с помощью AssetManager.open(), a 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 (

Ответ 2

Конечно, вы могли бы помещать новые строки в 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

Ответ 3

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

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

Ответ 4

Для тех, кто ищет рабочее решение, которое позволяет содержимому XML String иметь несколько строк для удобства обслуживания и отображать эти несколько строк в выводах TextView, просто поставьте \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.