Как добавить разрыв строки в Android TextView?

Я пытаюсь добавить разрыв строки в 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.

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

Ответ 1

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

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

так что обтекание в CDATA необходимо и разрывы добавляются внутрь как HTML-теги

Ответ 2

\n работает для меня, например:

<TextView android:text="First line\nNext line"

Ответ 3

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

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");

Ответ 4

Linebreaks (\n) работают только в том случае, если вы помещаете свое значение ресурса строки в кавычки следующим образом:

<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>

да, это легко.

Ответ 5

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

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

  • Только тогда каждый экземпляр строки "\n" escape-символов передается в фактическую строку

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

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

Ответ 6

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

android:text="First \n Second"

Ответ 7

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

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

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

2) Тег html newline <br> или <br />

<string name="sample> This<br>is a sample</string>

Ответ 8

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

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");

Ответ 9

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

Ответ 10

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

Ответ 11

Я использую следующее:

YOUR_TEXTVIEW.setText("Got some text \n another line");

Ответ 12

очень просто: используйте "\n"

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);

\n соответствует ASCII char 0xA, который является "LF" или линией

\ r соответствует ASCII char 0xD, который является "CR" или возврат каретки

это датируется первыми пишущими машинами, где вы можете выбрать только фид линии (и введите только строку ниже) или строку + возврат каретки (которая также перемещается в начало строки)

на Android/java\n соответствует карете return + line feed, так как вы в противном случае просто переписывали бы ту же строку

Ответ 13

Попробуйте перепроверить ваши локализации. Возможно, вы пытаетесь редактировать один файл (локализация), но на самом деле программа использует другой, как в моем случае. Системный язык по умолчанию русский, пока я пытаюсь отредактировать английскую локализацию.

В моем случае, рабочим решением является использование \n в качестве разделителя строк:

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>

Ответ 14

Также вы можете добавить "&lt;br&#47;&gt;" вместо \n.

Это HTML-код с экранированным кодом для < br/ >

И затем вы можете добавить текст в TexView:

articleTextView.setText(Html.fromHtml(textForTextView));

Ответ 15

Вы также можете использовать String-Editor для Android Studio, он автоматически генерирует линейные тормоза и прочее подобное...

Ответ 16

Поскольку Html.fromHtml устарел, я просто использовал этот код, чтобы получить String2 в следующей строке.

textView.setText(fromHtml("String1 <br/> String2"));

.

@SuppressWarnings("deprecation")
    public static Spanned fromHtml(String html){
        Spanned result;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
        } else {
            result = Html.fromHtml(html);
        }
        return result;
    }

Ответ 17

Самый простой способ сделать это - перейти к значениям/строкам (в папке с ресурсами)

Объявите там строку:

    <string name="example_string">Line 1\Line2\Line n</string>

И в вашем конкретном xml файле просто вызовите строку, например

    <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/example_string" />

Ответ 18

Я нашел другой метод: Необходимо добавить атрибут android: maxWidth = "40dp" . Конечно, это может не сработать отлично, но это дает разрыв строки.

Ответ 19

\n не работал для меня. Я смог решить проблему, изменив xml на text и создав текстовое свойство textview, как показано ниже.

android:text="Line 1
Line 2
Line 3

DoubleSpace"

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

Ответ 20

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

    final TextView textView = (TextView) findViewById(R.id.warm_up_view);
    StringBuilder sb = new StringBuilder();
    Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
    while (scanner.hasNextLine()) {
      sb.append(scanner.nextLine());
      sb.append("\n");
    }

    textView.setText(sb.toString());

Ответ 21

Может быть, вы можете вставить lf в текст, но он не отображается? Убедитесь, что у вас достаточно высоты для контроля. Например:

Правильный:

android:layout_height="wrap_content"

Может быть не прав

android:layout_height="10dp"

Ответ 22

textview.setText(text.replace("\r", "\n"));

Ответ 23

В моем случае я решил эту проблему, добавив следующее:

android:inputType="textMultiLine"