Как добавить разрыв строки в Android TextView? - PullRequest
137 голосов
/ 21 марта 2011

Я пытаюсь добавить разрыв строки в TextView.

Я пытался предложить \ n, но это ничего не дает. Вот как я устанавливаю свои тексты.

TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));

Это моя строка: <string name="sample_string">some test line 1 \n some test line 2</string>

Это должно выглядеть так:

some test line 1
some test line 2

Но это выглядит так: some test line 1 some test line 2.

Я что-то упустил?

Ответы [ 22 ]

201 голосов
/ 20 августа 2011

\n у меня работает, вот так:

<TextView android:text="First line\nNext line"
83 голосов
/ 22 марта 2011

ок разобрался:

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>

, поэтому необходимо завернуть в CDATA и добавить разрывы внутри в виде html-тегов

66 голосов
/ 12 мая 2012

Android версии 1.6 не распознает \ r \ n.Вместо этого используйте: System.getProperty ("line.separator")

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");
57 голосов
/ 07 марта 2012

Разрывы строк (\ n) * только 1001 * работают, если вы поместите значение строкового ресурса в кавычки, подобные этому:

<string name="sample_string">"some test line 1 \n some test line 2"</string>

Это не будет делать разрывы строк, если вы поставите его без кавычек, как это:

<string name="sample_string">some test line 1 \n some test line 2</string>

Да, это так просто.

29 голосов
/ 29 апреля 2013

Попробовал все вышесказанное, провел некоторые собственные исследования, в результате чего было получено следующее решение для рендеринга escape-символов перевода строки:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Используя метод замены, вам нужно отфильтровать escape перевод строки (например, \\ n)

  2. Только тогда каждый экземпляр escape-символа перевода строки '\ n' будет преобразован в фактический перевод строки

В этом примере я использовал базу данных noSQL (ScriptDb) Google Scripting Scripting с данными в формате JSON.

Приветствия: D

16 голосов
/ 23 декабря 2013

Это сработало для меня

android:text="First \n Second"
16 голосов
/ 25 марта 2014

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

1) Символ новой строки \n

<string name="sample> This\nis a sample</string>

2) Html тег новой строки <br> или <br />

<string name="sample> This<br>is a sample</string>
15 голосов
/ 28 декабря 2013

Это сработало для меня, может быть, кто-то найдет это полезным:

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
9 голосов
/ 24 сентября 2014

Используется Android Studio 0.8.9. Единственный способ, сработавший для меня, - это использование \n. Ни упаковка с CDATA, ни <br>, ни <br /> не сработали.

9 голосов
/ 21 марта 2011

Если вы используете XML для объявления того, что TextView использует android:singleLine = "false" или в Java, используйте txtSubTitle.setSingleLine(false);

...