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?
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
\n
funktioniert für mich wie folgt:
<TextView Android:text="First line\nNext line"
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");
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.
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"));
Mit der Replace-Methode müssen Sie escaped linefeeds filtern (z. B. '\\ n').
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
Das hat bei mir funktioniert
Android:text="First \n Second"
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");
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.
\n
<string name="sample> This\nis a sample</string>
<br>
oder <br />
<string name="sample> This<br>is a sample</string>
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.
Wenn Sie XML verwenden, um die Verwendung von TextView Android:singleLine = "false"
oder in Java zu erklären, verwenden Sie txtSubTitle.setSingleLine(false);
.
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
Ich benutze folgendes:
YOUR_TEXTVIEW.setText("Got some text \n another line");
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>
Sie können auch "<br/>"
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));
Sie können auch den String-Editor von Android Studio verwenden, der automatisch Leitungsbremsen und ähnliches generiert ...
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;
}
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" />
\ 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.
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());
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.
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"
In meinem Fall habe ich dieses Problem gelöst, indem ich Folgendes hinzugefügt habe:
Android:inputType="textMultiLine"