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

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.


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.


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


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


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


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.


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.


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

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.


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.


7

Dies löste mein Problem.

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


5

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

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

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.


5

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


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


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!


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

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>

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

Das wird funktionieren.


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.


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.


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

1

Randnotiz: Großschreiben von Text mit

android:inputType="textCapCharacters"

oder ähnliches scheint die \nArbeit zu stoppen .


1

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


1

Versuche dies:

android:text="Lorem Ipsum \nDolor Ait Amet \nLorem Ipsum"

0

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


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.


0

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


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."
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.