wake-up-neo.com

So fügen Sie einen Zeilenumbruch in einer Android-Textansicht hinzu

Ich versuche, einen Zeilenumbruch in der Textansicht einzufügen.

Ich habe versucht vorgeschlagen\n, aber das macht nichts. So setze ich meine Texte.

TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));

Dies ist mein String: <string name="sample_string">some test line 1 \n some test line 2</string>

Es sollte sich so zeigen:

some test line 1
some test line 2

Aber es zeigt sich so: some test line 1 some test line 2.

Fehlt mir etwas?

134
dropsOfJupiter

ok herausgefunden: 

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>

das Einwickeln in CDATA ist daher notwendig und die Unterbrechungen werden als HTML-Tags hinzugefügt

81
dropsOfJupiter

\n funktioniert für mich wie folgt:

<TextView Android:text="First line\nNext line"
196
RonN

Android-Version 1.6 erkennt\r\n ..__ nicht. Verwenden Sie stattdessen: System.getProperty ("line.separator").

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");
65
Eric JOYÉ

Zeilenumbrüche (\ n) only funktionieren, wenn Sie Ihren String-Ressourcenwert in Anführungszeichen wie folgt setzen:

<string name="sample_string">"some test line 1 \n some test line 2"</string>

Es wird keine Zeilenumbrüche geben, wenn Sie es ohne Anführungszeichen wie folgt setzen:

<string name="sample_string">some test line 1 \n some test line 2</string>

ja, das ist so einfach.

58
datayeah

Erprobte all das oben und führte einige Nachforschungen durch, die zu der folgenden Lösung für das Rendern von Zeilenvorschubzeichen führten:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Mit der Replace-Methode müssen Sie escaped linefeeds filtern (z. B. '\\ n').

  2. Erst dann werden die Escape-Zeichen von '\ n' des Zeilenvorschubs in den tatsächlichen Zeilenvorschub gerendert 

Für dieses Beispiel habe ich eine noSQL-Datenbank von Google Apps Scripting (ScriptDb) mit JSON-formatierten Daten verwendet.

Prost: D

28
Robert

Das hat bei mir funktioniert 

Android:text="First \n Second"
16
Aniruddha

Das hat für mich funktioniert, vielleicht findet jemand das hilfreich:

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
15
Zeljko Ivanovic

Um dies herum gibt es zwei Möglichkeiten. Wenn Sie Ihre Zeichenfolge als Rohzeichenfolge verwenden, müssen Sie das Zeichen Newline. Wenn Sie es als HTML verwenden, z. Durch die Analyse mit Html.fromString, ist die zweite Variante besser.

1) Zeilenvorschubzeichen \n

<string name="sample> This\nis a sample</string>

2) HTML-Zeilenumbruch-Tag <br> oder <br />

<string name="sample> This<br>is a sample</string>
15
poitroae

Verwendetes Android Studio 0.8.9. Der einzige Weg, der für mich funktioniert hat, ist \n. Weder das Umwickeln mit CDATA noch <br> oder <br /> funktionierten.

9

Wenn Sie XML verwenden, um die Verwendung von TextView Android:singleLine = "false" oder in Java zu erklären, verwenden Sie txtSubTitle.setSingleLine(false);.

8
strange quark

sehr einfach: benutze "\ n"

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);

\ n entspricht ASCII char 0xA, was 'LF' oder Zeilenvorschub ist

\ r entspricht ASCII char 0xD, was 'CR' oder Wagenrücklauf ist

dies geht auf die ersten Schreibmaschinen zurück, bei denen Sie nur einen Zeilenvorschub ausführen können (und nur eine Zeile darunter eingeben) oder einen Zeilenvorschub + Wagenrücklauf (der auch zum Zeilenanfang führt)

auf Android/Java entspricht\n einem Wagenrücklauf + Zeilenvorschub, da Sie sonst einfach dieselbe Zeile "überschreiben" würden 

8
Ronny Webers

Ich benutze folgendes:

YOUR_TEXTVIEW.setText("Got some text \n another line");
8
Carlo Matulessy

Versuchen Sie, Ihre Lokalisierungen noch einmal zu überprüfen. Möglicherweise versuchen Sie, eine Datei zu bearbeiten (Lokalisierung), aber tatsächlich programmieren Sie eine andere, wie in meinem Fall . Die Standardsprache ist Russisch, während ich versuche, die englische Lokalisierung zu bearbeiten.

In meinem Fall ist die Arbeitslösung "\ n" als Zeilentrennzeichen:

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>
6
Dr. Failov

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

Es ist HTML-Code für <br/>

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

articleTextView.setText(Html.fromHtml(textForTextView));
4
mobiledev Alex

Sie können auch den String-Editor von Android Studio verwenden, der automatisch Leitungsbremsen und ähnliches generiert ...

3
Tim

Da Html.fromHtml veraltet war, habe ich einfach diesen Code verwendet, um String2 in der nächsten Zeile zu erhalten.

textView.setText(fromHtml("String1 <br/> String2"));

.

@SuppressWarnings("deprecation")
    public static Spanned fromHtml(String html){
        Spanned result;
        if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.N) {
            result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
        } else {
            result = Html.fromHtml(html);
        }
        return result;
    }
2
Shylendra Madda

Der einfachste Weg, dies zu tun, ist, zu Werten/Strings (in Ihrem Ressourcenordner) zu gelangen. 

Deklarieren Sie dort eine Zeichenfolge:

    <string name="example_string">Line 1\Line2\Line n</string>

Und in Ihrer spezifischen XML-Datei rufen Sie einfach die Zeichenfolge auf

    <TextView
    Android:id="@+id/textView"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/example_string" />
2
Fidan Gill

\ n hat für mich nicht funktioniert. Ich konnte das Problem beheben, indem ich die XML-Datei in Text umwandelte und die Texteigenschaft textview wie folgt aufbaute.

Android:text="Line 1
Line 2
Line 3

DoubleSpace"

Hoffentlich hilft dies denjenigen, die gesagt haben, dass\n nicht für sie gearbeitet hat.

1
Josh Greco

Ich lese meinen Text aus einer Datei und verfolge daher einen etwas anderen Ansatz, da beim Hinzufügen von\n zur Datei\n im angezeigt wird Text.

    final TextView textView = (TextView) findViewById(R.id.warm_up_view);
    StringBuilder sb = new StringBuilder();
    Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
    while (scanner.hasNextLine()) {
      sb.append(scanner.nextLine());
      sb.append("\n");
    }

    textView.setText(sb.toString());
1
Rich Vogt

Ich habe eine andere Methode gefunden: Ist erforderlich, um das Attribut " Android: maxWidth =" 40dp "" .. hinzuzufügen. Natürlich funktioniert es möglicherweise nicht perfekt, aber es gibt einen Zeilenumbruch.

1
Master

Vielleicht können Sie lf in den Text einfügen, aber es wird nicht angezeigt? Stellen Sie sicher, dass Sie genügend Höhe für die Steuerung haben. Zum Beispiel:

Richtig:

Android:layout_height="wrap_content"

Kann falsch sein:

Android:layout_height="10dp"
0
Jarekczek

In meinem Fall habe ich dieses Problem gelöst, indem ich Folgendes hinzugefügt habe:

Android:inputType="textMultiLine"
0
Elcio Cestari