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

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.


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.


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


38

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


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


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


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.


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"));
}

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.


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.


7

Ini menyelesaikan masalah saya.

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


5

Salah satu cara melakukan ini adalah menggunakan Htmltag ::

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

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.


5

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


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


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!


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

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>

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

Ini akan bekerja


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.


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.


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

1

Catatan sisi: Memanfaatkan teks menggunakan

android:inputType="textCapCharacters"

atau serupa tampaknya menghentikan \nkerja.


1

Pastikan Anda menggunakan your_package.R dan tidakandroid.R



0

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


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.


0

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


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."
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.