Ресурс строки новая строка / n не возможно?


167

Не представляется возможным добавить новую строку /nв строку ресурса XML. Есть ли другой способ сделать это?


12
ты имеешь в виду \ n? у тебя есть пример?
Кит

1
Это должно быть \ n. У меня работает
akash89

1
@anandtripathi, я откатил твои изменения, потому что они делали ответы бессмысленными. ОП неправильно использовал \ n вместо / n, что является сутью вопроса. Мы не должны исправлять код OP, а только тело вопроса, для очевидных причин
Вега

Ответы:


382

используйте черную косую черту, а не прямую. \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

Кроме того, если вы планируете использовать строку в качестве HTML, вы можете использовать &lt;br /&gt;для разрыва строки ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>

3
В strings.xml он принимает только HTML-формат, поэтому & lt; br / & gt; соответствующее решение предоставлено
akash89

Я хочу упомянуть кое-что для таких людей, как я, зашедших на эту страницу благодаря Android Studio. В AS при извлечении строки с помощью инструмента IDE она автоматически удаляет символы новой строки. Вы можете просто вручную добавить их обратно, и это будет работать нормально. Не уверен, почему это так.
Джордж Раутенбах

\ n сделать мне работу, ни изменить строку, ни строка имеет / n. Ты знаешь почему ? ни один из них не входит в работу, что сказано в других ответах
Thelouras

52

Я знаю, что это довольно старый вопрос, но он занял первое место в списке, когда я искал. Поэтому я хотел обновить с другим методом.

В файле strings.xml вы можете сделать \ n или просто нажать enter:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

Это приведет к следующему на вашем TextView:

Это твоя строка.

Это вторая строка вашей строки.

Третья строка вашей строки.

Это потому, что было два возврата между начальным объявлением строки и новой строкой. Я также добавил \ n к нему для ясности, так как любой из них может быть использован. Мне нравится использовать возврат каретки в xml, чтобы увидеть список или любую многострочную строку, которая у меня есть. Мои два цента.


3
О, это интересно. Спасибо, что поделился. Кроме того, я чувствую себя идиотом, когда задаю этот вопрос, но похоже, что он помог многим людям. РЖУНИМАГУ!!
Анди Джей

4
Два последовательных перехода на новую строку обрабатываются (по крайней мере, в текущих версиях) Android как один пробел. github.com/paour/StringResourceTest
Пьер-Люк Паур

19

Это старый вопрос, но я обнаружил, что когда вы создаете такую ​​строку:

<string name="newline_test">My
New line test</string>

Вывод в вашем приложении будет таким (без новой строки)

My New line test

Когда вы помещаете строку в кавычки

<string name="newline_test">"My
New line test"</string>

новая строка появится:

My 
New line test

1
Работает для меня, но на всякий случай, помните, когда вы определяете ресурсы, как указано выше, вам следует избегать использования Html.fromHtml. Спасибо
Ахмад Реза Эншаи

Перенос многострочной строки в кавычки работал отлично. Гораздо лучше, чем ставить \nвезде (что может быстро стать нечитаемым и запутанным). Само собой разумеется, но на всякий случай: если вы хотите, чтобы в вашем тексте была буквальная кавычка, вы должны ее избежать:\"
Nolonar

4

Если вы поместите «\ n» в строку в XML-файле, он будет воспринят как «\\ n»

Так я и сделал :

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

И тогда я получаю скачок строки на экране


3
Это происходит только тогда, когда вы добавляете строку с помощью мастера. Если вы редактируете XML, он работает
Даниэль Аргуэльес,

Я тоже сделал эту ошибку. Спасибо за ваш совет. Но я просто исправил все появления \ n сам.
Канат

Не очень хорошее решение. Вы должны получить текст из ресурсов и использовать его напрямую. Что делать, если вам нужно обрабатывать больше специальных символов? Ты собираешься написать больше кода для них тоже? Что делать, если у вас есть крайние случаи?
Dephinera

3

При использовании редактора переводов в Android Studio просто щелкните значок справа (или используйте Shift-Enter), а затем добавьте разрывы строк, используя return. Это правильно вставит \ n в локализованный strings.xml.


Большое спасибо за этот ответ.
Просто

2
Справа нет значка, и Shift-Enter переходит к следующему тексту выше, по крайней мере, в Ubuntu.
Тибор Надь

3

В последней версии Android-студии «\ n» будет напечатано так, как будто оно должно быть там, если только вся строка не в апострофах

Например:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>

Как я могу сделать две строки разрыва?
jvargas

1

Очень просто, вы должны просто положить
\ n где хотите разбить строку в вашем строковом ресурсе.

Например

String s = my string resource have \n line break here;


Как я могу сделать две строки разрыва?
jvargas

1

не ставьте пробел после \ n, иначе он не будет работать. Я не знаю причину, но этот трюк сработал для меня довольно хорошо.


0

Я хочу расширить на этот ответ. Что они имели в виду, это значок:

Кнопка окна редактора

Он открывает «реальное окно редактора» вместо текстового поля с ограниченным набором функций в большом обзоре. В этом окне редактора разрешены специальные символы, разрывы строк и т. Д., Которые при сохранении преобразуются в правильный XML-код.


0

Я только столкнулся с этой проблемой. не работал TextViewс параметрами ограничения. Добавление android:lines="2"кажется исправить это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.