Як додати новий рядок до TextView в Android?


253

Коли я визначаю " TextViewв" xml, як додати до нього новий рядок? \nздається, не працює.

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
Ваш код працює для мене. Що ви отримуєте замість багаторядкового тексту?
монарм

2
У візуальному редакторі він відображається як текстовий \ n
Pentium10

Відповіді:


293

Не довіряйте редактору Visual. Ваш код працює в ему.


ну, в моєму випадку редактор Visual говорив правду. Це було додавання ще однієї похилої косої риси для відображення косої риски. Правильним способом було введення тексту всередину файлу xml.
dp2050

79

Спробуйте:

android:lines="2"

\n повинен працювати.


1
моє перегляд тексту може бути довше двох рядків. Це контроль. Це може бути практично все, що завгодно.
крапліOffJupiter


38

Я думаю, це має відношення до вашого HTM.fromHtml(subTitle)дзвінка: "\ n" не означає bupkis до HTML. Спробуйте <br/>замість "\ n".


25
@androidevAlex Це тому, що це <br/>, а не </br>
Ілля Коган

21

По-перше, помістіть це у своєму текстовому перегляді:

android:maxLines="10"

Потім використовуйте \nв тексті свого перегляду тексту.

maxLines робить TextView максимум цим високим рядком. Ви можете вибрати інший номер :)


19

Спробувавши все вищесказане, зробив декілька власних досліджень, в результаті чого було запропоновано наступне рішення для надання символів рятувальної стрічки подачі лінії:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Використання методу заміни вам потрібно фільтр врятувався новий рядок (наприклад '\\\n')

  2. Тільки тоді кожен екземпляр '\n'рятувальних рядків каналу рядка перетворюється на фактичне передачу рядків

Для цього прикладу я використав базу даних noSQL для скриптів Google Apps (ScriptDb) із форматованими даними JSON.

Ура: D


1
Це працювало для мене: substitute ("\\ n", System.getProperty ("line.separator"));
слот

швидше, string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
користувач846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

Я думаю, це спрацює.


8

Мої 2 копійки, використовуючи Android TV.

Додайте \nв рядки XML, читаючи:

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

Я просто вирішую ту саму проблему, кладу нижче атрибути в xml

android:lines="2" android:maxLines="4" android:singleLine="false"

робота. Html.fromHtml("text1 <br> text2").toString()також працюють.


Це все ще актуально, дякую! У мене були maxLines, але у мене не було singleLine = false.
blast_hardcheese

Це єдине рішення, яке працювало у мене. Дякую!
Сілас


7

Це вирішило мою проблему.

stringVar.replaceAll("\\\\n", "\\\n");


5

Один із способів зробити це за допомогою Htmlтегів ::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

Якщо ви налагодите, ви побачите, що рядок є насправді "\ \r\ \n"або "\ \n", тобто, є уникнутим. Тож якщо ви помасажуєте цю струну, щоб позбутися зайвого \, ви отримаєте своє рішення. Це справедливо, особливо якщо ви читаєте з бази даних.


5

Вам потрібно покласти "\n"в strings.xmlфайл не в макет сторінки.


Це працювало для мене, коли візуальний редактор додавав додаткові наклони, намагаючись відобразити
звороту косу рису

4

Треба тримати

1.android:maxLines="no of lines"

2.І використовувати \nдля отримання наступних рядків


4

Для мене рішенням було додати наступний рядок до макета:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

І \ n відображається як новий рядок у візуальному редакторі. Сподіваюся, це допомагає!


1
Я не впевнений, чи це пов’язано з питанням :)
Сулейман

У мене була така ж проблема, що замість нового рядка рядок "\ n" просто з'явився. Коли я додав рядок над цим, більше не хочеться, і з'явилася нова лінія
Роб

1
Можливо, це тому, що ти використовував tools:textі не android:textлюбиш ОП, але все одно шкода за тривогу :)
Сулейман

Я думаю, я мав би це уточнити краще, завдяки вашому коментарю, який я зараз зробив :) Я використовую, android:textя думаю, що це просто помилка візуального редактора, як підказує відповідь акцепту, але зручніше це бачити :)
Роб

Так, я зараз розумію, ти маєш рацію, це зручніше :) спасибі
Сулейман

4

Також ви можете додати &lt;br&gt;замість\n.

А потім ви можете додати текст до TexView:

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

Не в XML ви не можете. Це дає помилку компіляції - android:textне може містити <або> символів.
Timmmm

3

Потрібно помістити \nу файлstring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

2
 android:text="Previous Line &#10; Next Line" 

Це спрацює.


Ні, це не так.
shazbot

<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Попередня лінія & # 10; Нова LIne" /> Вам потрібно запустити емулятор, щоб побачити його роботу. Спасибі
Вірус Пармар

2

Просто спробуйте:

Textview_name.settext("something \n  new line "):

У файлі Java.


3
Будь ласка, надайте належну відповідь на питання, інакше використовуйте коментар
DjSh

1

Відповідь RuDrA05 хороша, Коли я редагую XML на затемнення, він не працює, але коли я редагую XML за допомогою блокнота ++, він НЕ працює.

Те ж саме відбувається, якщо я прочитаю файл txt, збережений із затемненням або блокнотом ++

Можливо, пов’язане з кодуванням.


1

Це чудово працює. Перевірте це у своєму додатку.

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

Бічна примітка: використання великої літери за допомогою

android:inputType="textCapCharacters"

або подібне, схоже, не зупиняє \nроботу.


1

Переконайтеся, що ви використовуєте, your_package.R а ніandroid.R



0

для нового рядка в TextView просто додайте \ n посеред тексту, він працює.


але відповідь стосується посилання на запитання Не "ВАШЕ" питання ...
Nikhil Borad

omg..sour плутати мене.можливо змінити свою відповідь .. Я змінюю свій голос на позитивний.
Ранджіт Кумар

1
ей спочатку відредагуйте свою відповідь. інакше я не можу змінити свій голос.
Ранджіт Кумар

0

Якщо TextView є в будь-якому макеті (наприклад, LinearLayout), спробуйте змінити атрибут орієнтації на вертикальний як android:orientation="vertical"для макета або змінити TextViewатрибут, android:singleLine="true"щоб створити після нього новий рядок.


0

Програматично: myTV.setText ("Мій текст" + "\ n" + myString);


0

Створіть рядок у stings.xml

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

Потім у вашому коді посилається на рядок

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.