Wie füge ich einer Textansicht in Android eine neue Zeile hinzu?

253

Wie füge ich beim Definieren eines TextViewIn xmleine neue Zeile hinzu? \nscheint nicht zu funktionieren.

<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
quelle
1
Ihr Code funktioniert bei mir. Was bekommen Sie anstelle von mehrzeiligem Text?
Molnarm
2
Im visuellen Editor wird es als Text
angezeigt

Antworten:

293

Vertraue dem visuellen Editor nicht. Ihr Code funktioniert in der Emu.

Macarse
quelle
Nun, in meinem Fall hat der visuelle Editor die Wahrheit gesagt. Es wurde ein weiterer Backslash hinzugefügt, um den Backslash anzuzeigen. Der richtige Weg war, den Text in die XML-Datei einzufügen.
dp2050
79

Versuchen:

android:lines="2"

\n sollte arbeiten.

Christian
quelle
1
Meine Textansicht könnte länger als 2 Zeilen sein. Es ist eine Kontrolle. Es kann fast alles sein.
Tropfen von Jupiter
44

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

Kakopappa
quelle
38

Ich denke, das hat etwas mit Ihrem HTM.fromHtml(subTitle)Aufruf zu tun : Ein "\ n" bedeutet nicht, dass Bupkis zu HTML gehören. Versuchen Sie es <br/>anstelle von "\ n".

resnbl
quelle
25
@androidevAlex Das liegt daran, dass es <br/> ist, nicht <
Ilya Kogan
21

Fügen Sie dies zunächst in Ihre Textansicht ein:

android:maxLines="10"

Verwenden Sie dann \nim Text Ihrer Textansicht.

Mit maxLines ist die Textansicht höchstens so viele Zeilen hoch. Sie können eine andere Nummer wählen :)

aF.
quelle
19

Ich habe alles oben Genannte versucht und selbst recherchiert, was zu der folgenden Lösung für das Rendern von Zeilenvorschub-Fluchtzeichen führte:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Mit der Methode replace Sie müssen Filter entkam Zeilenvorschübe (zB '\\\n')

  2. Erst dann wird jede Instanz von Zeilenvorschub- '\n'Escape-Zeichen in den tatsächlichen Zeilenvorschub gerendert

In diesem Beispiel habe ich eine Google Apps Scripting noSQL-Datenbank (ScriptDb) mit JSON-formatierten Daten verwendet.

Prost: D.

Robert
quelle
1
Dies funktionierte bei mir: replace ("\\ n", System.getProperty ("line.separator"));
Slott
stattdessen 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" />

Ich denke das wird funktionieren.

user3578286
quelle
8

Meine 2 Cent mit Android TV.

Fügen Sie \nbeim Lesen XML-Zeichenfolgen hinzu:

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

Ich löse gerade das gleiche Problem, füge unten Attribute in XML ein

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

Arbeit. Html.fromHtml("text1 <br> text2").toString()auch Arbeit.

Ben Wong
quelle
Das ist immer noch relevant, danke! Ich hatte maxLines, aber ich hatte keine singleLine = false.
blast_hardcheese
Dies ist die einzige Lösung, die von mir funktioniert hat. Vielen Dank!
Silas
8

Stellen Sie sicher , dass \nheißt in "\n"für sie zu arbeiten.

Justin
quelle
7

Dies löste mein Problem.

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

System.getProperty("line.separator"); diese Arbeit für mich.

Joao Victor
quelle
5

Eine Möglichkeit hierfür ist die Verwendung von HtmlTags ::

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

Wenn Sie debuggen, werden Sie sehen, dass die Zeichenfolge tatsächlich ist "\ \r\ \n"oder "\ \n"dh maskiert ist. Wenn Sie also diese Saite massieren, um das Extra loszuwerden \, haben Sie Ihre Lösung. Dies gilt insbesondere dann, wenn Sie aus einer Datenbank lesen.

Tilottama Gaat
quelle
5

Sie müssen das "\n"in die strings.xmlDatei einfügen, das nicht im Seitenlayout enthalten ist.

Epik42
quelle
Dies funktionierte für mich, als Visual Editor zusätzliche Backslashes hinzufügte, um den Backslash in \ n
dp2050
4

Müssen behalten

1.android:maxLines="no of lines"

2.Und \nzum Abrufen der nächsten Zeilen verwenden

Danny
quelle
4

Für mich bestand die Lösung darin, dem Layout die folgende Zeile hinzuzufügen:

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

Und \ n wird im visuellen Editor als neue Zeile angezeigt. Ich hoffe es hilft!

rauben
quelle
1
Ich bin nicht sicher, ob es mit der Frage zusammenhängt :)
Suleyman
Ich hatte das gleiche Problem, dass anstelle einer neuen Zeile nur die Zeichenfolge "\ n" angezeigt wurde. Als ich die Zeile darüber hinzufügte, war dies nicht mehr der Fall und die neue Zeile wurde angezeigt
Rob
1
Vielleicht liegt es daran, dass Sie das OP verwendet haben tools:textund es nicht android:textmögen, aber es tut mir trotzdem leid, dass Sie es gestört haben :)
Suleyman
Ich denke, ich hätte es besser klären sollen, dank Ihres Kommentars, den ich jetzt gemacht habe :) Ich benutze android:textIch denke, es ist nur ein Fehler des visuellen Editors, wie die akzeptierte Antwort andeutet, aber es ist bequemer, ihn sehen zu können :)
Rob
Ja, ich verstehe jetzt, Sie haben Recht, es ist bequemer :) Danke
Suleyman
4

Sie können auch &lt;br&gt;anstelle von hinzufügen \n.

Und dann können Sie TexView Text hinzufügen:

articleTextView.setText(Html.fromHtml(textForTextView));
mobiledev Alex
quelle
Nicht in der XML können Sie nicht. Es gibt einen Kompilierungsfehler - android:textdarf keine <oder> Zeichen enthalten.
Timmmm
3

Sie müssen \nin die Datei einfügenstring.xml

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

Das wird funktionieren.

Viraler Parmar
quelle
Nein, das tut es nicht.
Shazbot
<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Vorherige Zeile & # 10; New LIne" /> Sie müssen im Emulator ausgeführt werden, damit es funktioniert. Vielen Dank
Viral Parmar
2

Probier's einfach:

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

In der Java-Datei.

user11705013
quelle
3
Bitte geben Sie eine richtige Antwort auf die Frage, andernfalls verwenden Sie Kommentar
DjSh
1

Die Antwort von RuDrA05 ist gut: Wenn ich das XML bei Eclipse bearbeite, funktioniert es nicht, aber wenn ich das XML mit Notepad ++ bearbeite, funktioniert es.

Das gleiche passiert, wenn ich eine mit Eclipse oder Notepad ++ gespeicherte TXT-Datei lese

Vielleicht hängt das mit der Kodierung zusammen.

Sebastian Corradi
quelle
1

Das funktioniert gut. Überprüfen Sie es für Ihre App.

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

Randnotiz: Großschreiben von Text mit

android:inputType="textCapCharacters"

oder ähnliches scheint die \nArbeit zu stoppen .

Voy
quelle
1

Stellen Sie sicher, dass Sie verwenden your_package.R und nichtandroid.R

Dror
quelle
1

Versuche dies:

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

Für die neue Zeile in TextView fügen Sie einfach \ n in die Mitte Ihres Textes ein. Es funktioniert.

Nikhil Borad
quelle
aber Antwort bezieht sich auf die Frage Link „Ihr“ Frage ...
Nikhil Borad
omg..sorry verwirrt von mir.bitte bearbeiten Sie Ihre Antwort..Ich ändere meine Stimme positiv.
Ranjith Kumar
1
Hey, bearbeite zuerst deine Antwort. sonst kann ich meine Stimme nicht ändern.
Ranjith Kumar
0

Wenn sich die Textansicht in einem Layout befindet (z. B. LinearLayout), versuchen Sie, das Orientierungsattribut wie android:orientation="vertical"für das Layout in vertikal zu ändern, oder ändern Sie das TextViewAttribut android:singleLine="true", um danach eine neue Linie zu erstellen.

Pavani
quelle
0

Programmatisch: myTV.setText ("Mein Text" + "\ n" + myString);

LKS
quelle
0

Erstellen Sie eine Zeichenfolge in Ihrer stings.xml

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

Dann verweisen Sie in Ihrem Code auf die Zeichenfolge

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Hagen auslösen
quelle