Android'de bir TextView'e nasıl yeni satır ekleyebilirim?


253

Ben tanımladığınızda TextViewin xml, nasıl kendisine yeni bir satır eklerim? \nişe yaramıyor gibi görünüyor.

<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
Kodun benim için çalışıyor. Çok satırlı metin yerine ne elde edersiniz?
molnarm

2
Görsel editörde metinsel olarak gösterilir \ n
Pentium10

Yanıtlar:


293

Görsel düzenleyiciye güvenme. Kodunuz emu'da çalışıyor.


benim durumumda, Görsel editör doğruyu söylüyordu. Ters eğik çizgiyi görüntülemek için başka bir ters eğik çizgi ekliyordu. Doğru yol metni xml dosyasının içine koymaktı.
dp2050

79

Deneyin:

android:lines="2"

\n çalışmalı.


1
metin görünümüm 2 satırdan uzun olabilir. Bu bir kontrol. Hemen hemen her şey olabilir.
dropsOfJupiter


38

Bunun HTM.fromHtml(subTitle)çağrınızla bir ilgisi olduğunu düşünüyorum : "\ n" HTML için bupkis anlamına gelmez. <br/>"\ N" yerine deneyin .


25
@androidevAlex Çünkü <br/>, değil </br>
Ilya Kogan

21

Öncelikle bunu metin görünümünüze koyun:

android:maxLines="10"

Ardından \nmetin görünümünüzün metninde kullanın .

maxLines, TextView'i en fazla bu kadar satır uzunluğunda yapar. Başka bir numara seçebilirsiniz :)


19

Yukarıdakilerin hepsini denedim, kendi araştırmalarımı yaptım ve satır besleme kaçış karakterleri oluşturmak için aşağıdaki çözümü sağladım:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Filtre gereken yöntemi yerine kullanılması kaçan linefeeds (örn '\\\n')

  2. Ancak o zaman satır besleme '\n'kaçış karakterlerinin her bir örneği gerçek satır beslemesine dönüştürülür

Bu örnek için JSON biçimli verilerle bir Google Apps Scripting noSQL veritabanı (ScriptDb) kullandım.

Şerefe: D


1
Bu benim için çalıştı: replace ("\\ n", System.getProperty ("line.separator"));
slott

bunun yerine, 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" />

Bunun işe yarayacağını düşünüyorum.


8

Android TV kullanarak 2 sentim.

\nOkurken XML dizeleri ekleyin :

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

8

Ben sadece aynı sorunu çözmek, xml nitelikleri aşağıda koymak

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

iş. Html.fromHtml("text1 <br> text2").toString()ayrıca çalışır.


Bu hala alakalı, teşekkürler! MaxLines vardı, ama singleLine = false yoktu.
blast_hardcheese

Bu benden işe yarayan tek çözüm. Teşekkürler!
Silas

8

Çalışması için \nbulunduğunuzdan emin olun "\n".


7

Bu benim sorunumu çözdü.

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


5

Bunu yapmanın bir yolu Htmletiketleri kullanmaktır :

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

5

Eğer debug, dize aslında olduğunu göreceksiniz "\ \r\ \n"ya "\ \n"yani, o kaçtı edilir. Yani eğer bu dizeye masaj yaparsanız, ekstralardan kurtulmak \için çözümünüz olacaktır. Bu özellikle bir veritabanından okuyorsanız geçerlidir.


5

Sen koymak gerek "\n"de strings.xmlyok sayfa düzeni içinde dosyanın.


Bu benim için çalıştı, burada Visual Editor \ n
dp2050

4

Saklamak gerekiyor

1.android:maxLines="no of lines"

2. \nve sonraki Hatları almak için kullanın


4

Benim için çözüm, düzene aşağıdaki satırı eklemekti:

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

Ve \ n görsel düzenleyicide yeni bir satır olarak görünür. Umarım yardımcı olur!



Ben yeni bir satır yerine "\ n" dize sadece kendini gösterdi aynı sorun vardı. Yukarıdaki çizgiyi eklediğimde artık böyle değil ve yeni çizgi ortaya çıktı
Rob

1
Belki de OP'yi kullanmıyorsunuz tools:textve android:textbeğenmediğiniz için, ama rahatsız edici olduğunuz için üzgünüm :)
Süleyman

Sanırım şimdi daha iyi açıklamış olmalıydım, şimdi yaptığım yorum sayesinde :) Ben android:textsadece görsel editörün bir hata olduğunu düşünüyorum, kabul cevap gibi, ama bunu görebilmek daha rahat :)
Rob

Evet, şimdi anlıyorum, haklısın daha rahat :) teşekkürler
Suleyman

4

Ayrıca &lt;br&gt;,\n.

Ve sonra TexView'e metin ekleyebilirsiniz:

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

XML'de değil yapamazsınız. Derleme hatası veriyor - android:text<veya> karakter içeremez.
Timmmm

3

\nDosyaya koymanız gerekiyorstring.xml

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

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

Bu çalışacak.


Hayır.
shazbot

<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Önceki Satır & # 10; Yeni LIne" /> Çalıştığını görmek için emülatörde çalıştırmanız gerekiyor. Teşekkürler
Viral Parmar

2

Sadece dene:

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

Java dosyasında.


3
Lütfen soruya uygun bir cevap verin, aksi takdirde yorumu kullanın
DjSh

1

RuDrA05'in cevabı iyidir, Tutulma üzerine XML'i düzenlediğimde işe yaramaz, ancak XML'i notepad ++ ile düzenlediğimde çalışır.

Tutulma veya notepad ++ ile kaydedilmiş bir txt dosyasını okursam da aynı şey oluyor

Belki kodlama ile ilgilidir.


1

Bu iyi çalışıyor. Uygulamanız için kontrol edin.

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

1

Yan not: Metni kullanarak büyük harf kullanma

android:inputType="textCapCharacters"

ya da benzeri \nçalışmayı durduruyor gibi görünüyor .


1

Emin olun, kullandığınız your_package.R değilandroid.R




0

TextView herhangi bir Mizanpaj içindeyse (örneğin, LinearLayout), android:orientation="vertical"mizanpaj için olduğu gibi orientation niteliğini dikey olarak değiştirmeye çalışın veya ardından yeni bir satır oluşturmak için TextViewniteliği değiştirin android:singleLine="true".


0

Programlı olarak: myTV.setText ("Metnim" + "\ n" + myString);


0

Stings.xml dosyasında bir dize oluşturun

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

Sonra kod içinde dizeye referans

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.