Как добавить разрыв строки в 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 ]

8 голосов
/ 02 июня 2016

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

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

\ n соответствует символу ASCII 0xA, который является 'LF' или переводом строки

\ r соответствует символу ASCII 0xD, который равен 'CR' или возврату каретки

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

в Android / java \ n соответствует возврату каретки + перевод строки, в противном случае вы просто «перезаписали бы» ту же строку

8 голосов
/ 24 октября 2013

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

YOUR_TEXTVIEW.setText("Got some text \n another line");
6 голосов
/ 15 февраля 2016

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

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

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>
4 голосов
/ 19 июля 2011

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

Это экранированный код HTML для

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

articleTextView.setText(Html.fromHtml(textForTextView));
3 голосов
/ 15 января 2017

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

2 голосов
/ 30 августа 2017

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

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

    <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" />
2 голосов
/ 29 июня 2017

Поскольку 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;
    }
1 голос
/ 05 марта 2018

Я читаю свой текст из файла, поэтому я выбрал слегка другой подход, так как добавление \ 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());
1 голос
/ 02 марта 2018

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

android:text="Line 1
Line 2
Line 3

DoubleSpace"

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

1 голос
/ 27 июля 2016

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

...