Bagaimana cara menambahkan baris baru ke TextView di Android?

253

Ketika saya mendefinisikan a TextView dalam xml, bagaimana cara menambahkan baris baru untuk itu? \nsepertinya tidak bekerja.

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />
Pentium10
sumber
1
Kode Anda berfungsi untuk saya. Apa yang Anda dapatkan daripada teks multiline?
molnarm
2
Dalam editor visual itu ditampilkan sebagai tekstual \ n
Pentium10

Jawaban:

293

Jangan percaya editor Visual. Kode Anda berfungsi di emu.

Makarse
sumber
baik, dalam kasus saya, editor Visual mengatakan yang sebenarnya. Itu menambahkan backslash lain untuk menampilkan backslash. Cara yang benar adalah meletakkan teks di dalam file xml.
dp2050
79

Mencoba:

android:lines="2"

\n harus bekerja.

Kristen
sumber
1
tampilan teks saya bisa lebih dari 2 baris. Ini sebuah kontrol. Itu bisa apa saja.
dropsOfJupiter
44

mencoba System.getProperty("line.separator");

kakopappa
sumber
38

Saya pikir ini ada hubungannya dengan HTM.fromHtml(subTitle)panggilan Anda : a "\ n" tidak berarti bupkis ke HTML. Coba <br/>alih-alih "\ n".

resnbl
sumber
25
@androidevAlex Itu karena itu <br/>, bukan </br>
Ilya Kogan
21

Pertama, letakkan ini di tampilan teks Anda:

android:maxLines="10"

Lalu gunakan \n dalam teks tampilan teks Anda.

maxLines membuat TextView paling banyak setinggi ini. Anda dapat memilih nomor lain :)

aF.
sumber
19

Mencoba semua hal di atas, melakukan beberapa penelitian sendiri menghasilkan solusi berikut untuk rendering karakter feed line:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Menggunakan metode ganti, Anda perlu memfilter umpan baris yang lolos (mis. '\\\n')

  2. Hanya dengan demikian setiap instance dari '\n'karakter feed escape baris akan diberikan ke dalam linefeed yang sebenarnya

Untuk contoh ini saya menggunakan database noSQL Google Apps Scripting (ScriptDb) dengan data form JSON.

Ceria: D

Robert
sumber
1
Ini berfungsi untuk saya: ganti ("\\ n", System.getProperty ("line.separator"));
slot
melainkan, string = string.replaceAll ("\\ n", System.getProperty ("line.separator"));
user846316
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" />

Saya pikir ini akan berhasil.

pengguna3578286
sumber
8

2 sen saya, menggunakan TV Android.

Tambahkan \nstring XML, sambil membaca:

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

Saya baru saja menyelesaikan masalah yang sama, letakkan atribut di bawah ini dalam xml

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

kerja. Html.fromHtml("text1 <br> text2").toString()juga bekerja.

Ben Wong
sumber
Ini masih relevan, terima kasih! Saya memiliki maxLines, tetapi saya tidak memiliki singleLine = false.
blast_hardcheese
Ini adalah satu-satunya solusi yang berhasil dari saya. Terima kasih!
Silas
8

Pastikan Anda \nyaitu di "\n"untuk itu untuk bekerja.

Justin
sumber
7

Ini menyelesaikan masalah saya.

stringVar.replaceAll("\\\\n", "\\\n");
viki
sumber
6

System.getProperty("line.separator"); ini bekerja untuk saya.

João Victor
sumber
5

Salah satu cara melakukan ini adalah menggunakan Htmltag ::

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

Jika Anda men-debug, Anda akan melihat bahwa string sebenarnya "\ \r\ \n"atau "\ \n", yaitu, itu lolos. Jadi, jika Anda memijat string itu, untuk menyingkirkan tambahan \, Anda akan memiliki solusi. Ini benar terutama jika Anda membaca dari database.

Tilottama Gaat
sumber
5

Anda harus menempatkan "\n"dalam strings.xmlberkas tidak dalam tata letak halaman.

epicness42
sumber
Ini bekerja untuk saya, di mana Visual Editor menambahkan backslash tambahan mencoba untuk menampilkan backslash di \ n
dp2050
4

Perlu disimpan

1.android:maxLines="no of lines"

2.Dan gunakan \nuntuk mendapatkan Garis berikutnya

Danny
sumber
4

Bagi saya solusinya adalah menambahkan baris berikut ke tata letak:

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

Dan \ n muncul sebagai baris baru di editor visual. Semoga ini bisa membantu!

rampok
sumber
1
Saya tidak yakin apakah ini terkait dengan pertanyaan :)
Suleyman
Saya memiliki masalah yang sama bahwa alih-alih baris baru string "\ n" hanya muncul sendiri. Ketika saya menambahkan baris di atas, ini tidak terjadi lagi dan baris baru muncul
Rob
1
Mungkin itu karena Anda menggunakan tools:textdan tidak android:textsuka OP, tetapi bagaimanapun juga karena mengganggu :)
Suleyman
Saya pikir saya harus mengklarifikasi dengan lebih baik, terima kasih atas komentar Anda yang sekarang saya lakukan :) Saya menggunakan itu android:textsaya pikir itu hanya bug dari editor visual, seperti yang disarankan jawaban penerima tetapi lebih nyaman untuk dapat melihatnya :)
Rob
Ya, saya mengerti sekarang, Anda benar itu lebih nyaman :) terima kasih
Suleyman
4

Anda juga bisa menambahkan &lt;br&gt; bukannya\n.

Dan kemudian Anda dapat menambahkan teks ke TexView:

articleTextView.setText(Html.fromHtml(textForTextView));
mobiledev Alex
sumber
Tidak dalam XML Anda tidak bisa. Ini memberikan kesalahan kompilasi - android:texttidak dapat mengandung <atau> karakter.
Timmmm
3

Anda harus memasukkan \nfilestring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>
simmash
sumber
2
 android:text="Previous Line &#10; Next Line" 

Ini akan bekerja

Viral Parmar
sumber
Tidak, tidak.
shazbot
<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Baris Sebelumnya & # 10; New LIne" /> Anda perlu menjalankan emulator untuk melihatnya berfungsi. Terima kasih
Viral Parmar
2

Coba saja:

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

Dalam file Java.

pengguna11705013
sumber
3
Tolong berikan jawaban yang tepat untuk pertanyaan, jika tidak gunakan komentar
DjSh
1

Jawaban RuDrA05 baik, Ketika saya mengedit XML pada gerhana itu tidak berfungsi, tetapi ketika saya mengedit XML dengan notepad ++ itu TIDAK berfungsi.

Hal yang sama terjadi jika saya membaca file txt yang disimpan dengan eclipse atau notepad ++

Mungkin terkait dengan pengkodean.

Sebastian Corradi
sumber
1

Ini berfungsi dengan baik. Periksa aplikasi Anda.

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

Catatan sisi: Memanfaatkan teks menggunakan

android:inputType="textCapCharacters"

atau serupa tampaknya menghentikan \nkerja.

Voy
sumber
1

Pastikan Anda menggunakan your_package.R dan tidakandroid.R

Dror
sumber
1

Coba ini:

android:text="Lorem Ipsum \nDolor Ait Amet \nLorem Ipsum"
Muss Mesmari
sumber
0

untuk baris baru di TextView tambahkan saja \ n di tengah teks Anda berfungsi ..

Nikhil Borad
sumber
tetapi jawaban terkait dengan tautan pertanyaan Bukan pertanyaan "ANDA" ...
Nikhil Borad
omg..mohon bingung dengan saya. tolong edit jawaban anda..saya mengubah suara saya positif.
Ranjith Kumar
1
hai, edit jawaban Anda terlebih dahulu. kalau tidak saya tidak dapat mengubah suara saya.
Ranjith Kumar
0

Jika TextView berada di Layout apa pun (misalnya LinearLayout), cobalah untuk mengubah atribut orientasi menjadi vertikal seperti android:orientation="vertical"tata letak atau mengubah TextViewatribut android:singleLine="true"untuk membuat baris baru setelahnya.

Pavani
sumber
0

Secara terprogram: myTV.setText ("My Text" + "\ n" + myString);

LKS
sumber
0

Buat string di stings.xml Anda

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

Kemudian dalam referensi kode Anda string

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Trigve Hagen
sumber