Android textview не поддерживает разрыв строки

Я создаю пользовательский вид программно, который отображает текст, который анализируется из XML-файла. Текст длинный и содержит символ «/ n» для разрывов силовой линии. По какой-то причине в текстовом представлении отображается / n, и никаких разрывов строк нет. Вот мой код:

// get the first section body Object body1 = tempDict.get("FIRE"); String fireText = body1.toString(); // create the section body TextView fireBody = new TextView(getActivity()); fireBody.setTextColor(getResources().getColor(R.color.black)); fireBody.setText(fireText); fireBody.setTextSize(14); fireBody.setSingleLine(false); fireBody.setMaxLines(20); fireBody.setBackgroundColor(getResources().getColor(R.color.white)); // set the margins and add to view layoutParams.setMargins(10, 0, 10, 0); childView.addView(fireBody,layoutParams); 

Текст из XML-файла выглядит так:

 Now is the time /n for all good men to /n come to the aid of their /n party 

Он должен отображаться как таковой;

 Now is the time for all good men to come to the aid of their party 

Есть ли настройки, которые мне не хватает?

ОБНОВИТЬ

\ R \ n работает, если я буду жестко закодировать его в своем представлении. то есть:

 String fireText = "Now is the time \r\n for all good men \r\n to come to the aid"; 

На самом деле \ n также работает, если я его жестко кодирую:

 String fireText = "Line one\nLine two\nLine three"; 

FYI

 System.getProperty("line.separator"); 

Это возвращает строку «/ n», поэтому нет необходимости конвертировать в «/ r / n».

К сожалению, мои данные происходят в XML-файле, который анализируется и сохраняется в хэш-карте. Я попробовал следующее:

 String fireText = body1.toString().replaceAll("\n", "\r\n"); 

\ N не заменяется на \ r \ n. Может быть, потому, что я перехожу из объекта в String?

Solutions Collecting From Web of "Android textview не поддерживает разрыв строки"

У меня была такая же проблема при тех же обстоятельствах. Решение довольно прямолинейно.

Когда вы думаете об этом, так как виджет textview отображает текст с буквальными значениями «\ n», тогда строка, которую он задает, должна хранить каждый «\ n», как «\\ n». Итак, когда ваша XML-строка считывается и сохраняется, все вхождения «\ n» экранируются, чтобы сохранить этот текст в виде буквального текста.

В любом случае, все, что вам нужно сделать, это:

 fireBody.setText(fireText.replace("\\n", "\n")); 

Работает на меня!

Для разрыва строки вы используете заданный текстовый вид в макете xml таким образом.

Сейчас время для всех хороших людей приходить на помощь их стороне

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

String = string.replace ("\\ n", System.getProperty ("line.separator"));

1), используя метод замены, который вам нужно для фильтрации экранированных строк (например, «\\ n»)

2) только тогда каждый экземпляр строки «\ n» escape-символов выводится в фактический поток строк

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

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

У меня также была эта проблема, и я нашел действительно ПРОСТОЕ РЕШЕНИЕ, если установить текст из XML-ресурсов (я знаю, что это не то же самое, что и OP, но его стоит знать)

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

 <string name="test_string">"1. First 2. Second Line 3. Third Line"</string> 

попробуй это

 fireBody.setText(Html.fromHtml("testing<br>line<\br>") 

Вашему серверу нужно отправить FirstLine<br>lineAfterLineBreak<\br>

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

Итак, теперь ваш код в XML становится

 android:text="Now is the time \r\n for all good men to \r\n come to the aid of their \r\n party" 

Или если вы хотите сделать это программно, то в вашем java-коде:

 fireBody.setText("Now is the time \r\n for all good men to \r\n come to the aid of their \r\n party"); 

Вы также можете объявить текст как значение ресурса строки, например:

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

Другой простой способ сделать это – изменить атрибут по умолчанию TextView в вашем XML-файле.

 <TextView android:id="@+id/tvContent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="false" /> 

И затем используйте textView.setText("First line \nSecond line \nThird line");