String Ressource neue Zeile / n nicht möglich?

167

Es scheint nicht möglich zu sein /n, einer XML-Ressourcenzeichenfolge eine neue Zeile hinzuzufügen . Gibt es einen anderen Weg, dies zu tun?

Andi Jay
quelle
12
du meinst \ n? Hast du ein Beispiel?
Keith
1
Es soll \ n sein. Funktioniert für mich
akash89
1
@anandtripathi, ich habe Ihre Bearbeitung zurückgesetzt, weil dadurch die Antworten bedeutungslos wurden. Das OP hatte fälschlicherweise \ n anstelle von / n verwendet, was das Wesentliche der Frage ist. Wir sollten nicht den Code von OP korrigieren, sondern nur den Fragentext für die offensichtlichen Gründe
Vega

Antworten:

382

Verwenden Sie einen Blackslash, keinen Forwardslash. \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

Wenn Sie die Zeichenfolge als HTML verwenden möchten, können Sie sie auch &lt;br /&gt;für einen Zeilenumbruch verwenden ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>
James
quelle
3
In der Datei strings.xml wird nur das HTML-Format akzeptiert, sodass & lt; br / & gt; ist die geeignete Lösung zur Verfügung gestellt
akash89
Ich möchte etwas für Leute wie mich erwähnen, die diese Seite wegen Android Studio erreichen. Wenn Sie in AS eine Zeichenfolge mit dem IDE-Tool extrahieren, werden automatisch Zeilenumbrüche entfernt. Sie können sie einfach manuell wieder hinzufügen und es wird gut funktionieren. Ich bin mir nicht sicher, warum das so ist.
George Rautenbach
\ n Arbeite nicht für mich, ändere weder die Zeile noch die Zeichenfolge hat / n. Weißt du, warum ? Weder Hit Enter Werke, die in anderen Antworten
sagten
52

Ich weiß, dass dies eine ziemlich alte Frage ist, aber sie stand bei meiner Suche ganz oben auf der Liste. Also wollte ich mit einer anderen Methode aktualisieren.

In der Datei strings.xml können Sie \ n ausführen oder einfach die Eingabetaste drücken:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

Dies führt in Ihrer Textansicht zu folgenden Ergebnissen:

Das ist deine Saite.

Dies ist die zweite Zeile Ihrer Zeichenfolge.

Dritte Zeile Ihrer Zeichenfolge.

Dies liegt daran, dass zwischen der Anfangsdeklaration der Zeichenfolge und der neuen Zeile zwei Rückgaben lagen. Aus Gründen der Übersichtlichkeit habe ich auch das \ n hinzugefügt, da beide verwendet werden können. Ich verwende gerne die Zeilenumbrüche in der XML-Datei, um eine Liste oder eine mehrzeilige Zeichenfolge anzeigen zu können. Meine zwei Cent.

Dimesio
quelle
3
Oh, das ist interessant. danke für das Teilen. Ich fühle mich auch wie ein Idiot, wenn ich diese Frage stelle, aber es sieht so aus, als hätte es vielen Menschen geholfen. LOL !!
Andi Jay
4
Zwei aufeinanderfolgende Zeilenumbrüche werden von (zumindest aktuellen Versionen von) Android als nur ein Leerzeichen behandelt. github.com/paour/StringResourceTest
Pierre-Luc Paour
19

Dies ist eine alte Frage, aber ich habe festgestellt, dass beim Erstellen eines Strings wie folgt:

<string name="newline_test">My
New line test</string>

Die Ausgabe in Ihrer App wird so aussehen (kein Zeilenumbruch)

My New line test

Wenn Sie die Zeichenfolge in Anführungszeichen setzen

<string name="newline_test">"My
New line test"</string>

Die neue Zeile wird angezeigt:

My 
New line test
Peter
quelle
1
Funktioniert für mich, aber nur für den Fall, denken Sie daran, wenn Sie Ressourcen wie oben definieren, sollten Sie die Verwendung vermeiden Html.fromHtml. Vielen Dank
Ahmad Reza Enshaee
Das Umschließen der mehrzeiligen Zeichenfolge in Anführungszeichen funktionierte einwandfrei. Viel besser als \nüberall zu platzieren (was schnell unlesbar und verwirrend werden kann). Unnötig zu sagen, aber nur für den Fall: Wenn Sie ein wörtliches Anführungszeichen in Ihrem Text haben möchten, müssen Sie ihm entkommen:\"
Nolonar
4

Wenn Sie "\ n" in eine Zeichenfolge in der XML-Datei einfügen, wird diese als "\\ n" verwendet.

So tat ich :

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

Und dann bekomme ich einen Zeilensprung auf dem Bildschirm

flamandier
quelle
3
Tritt nur auf, wenn Sie die Zeichenfolge mit dem Assistenten hinzufügen. Wenn Sie die XML bearbeiten, funktioniert es
Daniel Argüelles
Ich habe diesen Fehler auch gemacht. Danke für deinen Rat. Aber ich habe gerade alle Erscheinungen von mir korrigiert.
Kanat
Keine gute Lösung. Sie sollten den Text aus den Ressourcen abrufen und direkt verwenden. Was ist, wenn Sie mit mehr Sonderzeichen umgehen müssen? Wirst du auch mehr Code für sie schreiben? Was ist, wenn Sie Randfälle haben?
Dephinera
3

Wenn Sie den Übersetzungseditor in Android Studio verwenden, klicken Sie einfach auf das Symbol rechts (oder verwenden Sie die Umschalt-Eingabetaste) und fügen Sie dann Zeilenumbrüche mit der Eingabetaste hinzu. Dadurch wird \ n korrekt in die lokalisierte Datei strings.xml eingefügt.

Torkel Börjeson
quelle
Vielen Dank für diese Antwort.
Einfach
2
Rechts befindet sich kein Symbol, und die Umschalttaste springt zum nächsten Text oben, zumindest auf Ubuntu.
Tibor Nagy
3

In der neuesten Version von Android Studio wird "\ n" so gedruckt, als ob es dort sein sollte, es sei denn, die gesamte Zeichenfolge befindet sich in Apostrophen

Beispielsweise:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>
Sventra
quelle
Wie kann ich zwei Bruchlinien machen?
Jvargas
1

Sehr einfach müssen Sie nur
\ n einfügen, wo immer Sie die Linie in Ihrer Zeichenfolgenressource unterbrechen möchten.

Beispielsweise

String s = my string resource have \n line break here;

Ali Nawaz
quelle
Wie kann ich zwei Bruchlinien machen?
Jvargas
1

Setzen Sie kein Leerzeichen nach \ n, sonst funktioniert es nicht. Ich kenne den Grund nicht, aber dieser Trick hat bei mir ziemlich gut funktioniert.

SaloniGupts
quelle
0

Ich möchte diese Antwort erweitern. Was sie meinten, ist dieses Symbol:

Schaltfläche im Editorfenster

Es öffnet sich ein "echtes Editorfenster" anstelle des Textfelds mit eingeschränkten Funktionen in der großen Übersicht. In diesem Editorfenster sind Sonderzeichen, Zeilenumbrüche usw. zulässig und werden beim Speichern in den richtigen XML- "Code" konvertiert

Patrick
quelle
0

Ich habe mich gerade diesem Problem gestellt. hat nicht TextViewmit Einschränkungsparametern gearbeitet. Das Hinzufügen android:lines="2"scheint dies zu beheben.

Hügel Karimov
quelle