ist es möglich hinzuzufügen
in TextView? Hat jemand eine ähnliche Funktionalität erreicht?
Ich möchte in TextView nicht zerbrechlichen Speicherplatz haben.
Mikooos
ist es möglich hinzuzufügen
in TextView? Hat jemand eine ähnliche Funktionalität erreicht?
Ich möchte in TextView nicht zerbrechlichen Speicherplatz haben.
Dan Färber
TextView
respektiert die Unicode-Leerzeichen ohne Umbruch (\u00A0
), was eine einfachere/leichtere Lösung als HTML wäre.
Das funktioniert super. Sie können das zu XML oder in Java-Code hinzufügen. Funktioniert gut in Java-Code, in XML habe ich nicht viel getestet, aber es sollte den Job machen.
– Mikooos
4. Juli 2011 um 7:52 Uhr
Weder \u0020 noch \u00A0 funktionieren. Weder durch Setzen in XML (auch nicht in der Vorschau in XML) noch durch Setzen in Java mit setText(). Habe beides mit Android 4.1 und 4.2 probiert
– Stephan Wiesner
20. Februar 2013 um 6:08 Uhr
Das funktioniert nicht in Verbindung mit Komma. In solchen Fällen erhalten Sie einen Zeilenumbruch direkt nach dem Komma
– Alex Bonel
1. Juli 2015 um 13:26 Uhr
\u00A0 reicht für mich nicht aus. Es macht kein Leerzeichen, sondern fügt nur die Wörter hinzu – Android 4.4.4, 5.0, 5.1
– Marcel Bruder
6. Oktober 2015 um 15:14 Uhr
In Kotlin funktioniert es sehr gut. Ich ersetze alle Leerzeichen durch diese, und es wird von den letzten Zeichen weggelassen. str.replace(” “, “\u00A0”) ergibt “Hallo wo…” statt “Hallo…”
– Seop Yoon
23. Februar 2018 um 2:27 Uhr
TWiStErRob
Es ist möglich zu verwenden
eine lesbare Lösung zu haben. Einschließlich \u00A0
oder  
oder  
/ 
im Text vermittelt dem Leser des Quellcodes (oder dem Übersetzer in diesem Fall) nicht wirklich viele Informationen, es sei denn, Sie erinnern sich an die Hex-Codes. Hier ist eine Möglichkeit, die benannte Entität in zu verwenden strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY nbsp " "><!-- non-breaking space, U+00A0 -->
]>
<resources>
...
</resources>
Dadurch wird die fehlende Deklaration erstellt. Das Original HTML Erklärung finden Sie in https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent vom Üblichen referenziert XHTML-DTDs. All dies funktioniert, weil der XML-Parser diese liest und beim Laden der Datei ersetzt, sodass die Entität in den resultierenden kompilierten Ressourcen nicht vorhanden ist.
im Android-Text (CharSequence
) Ressourcen<!-- Defined in <resources> -->
<string name="html_text">Don\'t break <b>this name</b></string>
<!-- Used in a layout -->
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:background="#10000000"
android:text="@string/html_text"
/>
Gerät und Vorschau (Vorschau erkennt kein HTML)
in Android String (formatiert) Ressourcen<!-- Defined in <resources> -->
<string name="formatted_text">%1$s is nice</string>
<!-- Used in a layout -->
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:background="#10000000"
tools:text="@string/formatted_text"
/>
Dann im Code:
String contents = getString(R.string.formatted_text, "Using an ");
((TextView)view.findViewById(android.R.id.text1)).setText(contents);
Gerät und Vorschau (Vorschau erkennt keine Entitäten und Java-Strings sind wörtlicher Text!)
Dies sind nur Beispiele für die Verwendung von DTD-Entitäten, verwenden Sie sie nach Ihren eigenen Vorlieben.
<!ENTITY con "\'"><!-- contraction, otherwise error: "Apostrophe not preceded by \"
Sadly ' cannot be overridden due to XML spec:
https://www.w3.org/TR/xml/#sec-predefined-ent -->
<!ENTITY param1 "%1$s"><!-- format string argument #1 -->
<string name="original">Don\'t wrap %1$s</string>
<string name="with_entities">Don&con;t wrap ¶m1;</string>
Android übernimmt die ’
Zeichen ganz gut, keine Notwendigkeit, Apostroph-Entitäten zu erstellen. <string name="original">Don’t wrap %1$s</string>
funktioniert wie erwartet.
– Diti
21. Juli 2016 um 15:02 Uhr
@Diti Das ist keine APOSTROPHdas ist ein RECHTES EINFACHES ANFÜHRUNGSZEICHEN; vergleichen '
VS ’
. Android hat keine Probleme mit ausgefalleneren Unicode-Zeichen, aber es hat ein Problem mit ASCII 0x27, das maskiert werden muss. Die Entität ist nur eine Annehmlichkeit, ich habe sie nur dort platziert, um zu demonstrieren, wo sie nützlich sein könnte.
– TWiStErRob
21. Juli 2016 um 16:35 Uhr
Das ist ausgezeichnet =) Danke. Ich finde das viel sauberer und einfacher zu lesen.
– Alex Hart
22. Dezember 2016 um 14:01 Uhr
Tolle Antwort, danke! Ich stimme dem zu
in den Zeichenfolgen ist für Übersetzer viel aussagekräftiger als der Unicode \u00A0
– Marc Attinasi
6. April 2017 um 21:59 Uhr
@Seven natürlich, siehe letzten Abschnitt (Weitere Tricks), der hinzufügt con
und param1
in derselben Datei.
– TWiStErRob
28. November 2018 um 20:07 Uhr
Brenagwynn
\u00A0
ist ein geschütztes Leerzeichen, \u0020
ist kein geschütztes Leerzeichen
Die TextView sollte das geschützte Leerzeichen berücksichtigen
<string name="test">Hello world</string>
oder
new TextView("Hello\u00A0world");
Eine einzigartige Situation, auf die ich gestoßen bin, war das Hinzufügen eines geschützten Leerzeichens zu einer Zeichenfolgenressource, die benötigt wurde String.format
Parameter.
<resources>
<string name="answer_progress" formatted="false">Answered %d of %d</string>
</resources>
Ich habe versucht, das geschützte Leerzeichen einfach zu kopieren und in die Zeichenfolge einzufügen, und es wurde nach dem Kompilieren durch ein normales altes Leerzeichen ersetzt.
Entferne den formatiert = “false”die Nummerierung der Formatargumente und die Verwendung der Backslash-Notation hat bei mir funktioniert:
<resources>
<string name="answer_progress">Answered %1$d\u00A0of\u00A0%2$d</string>
</resources>
Kunstplastik
Das hat bei mir funktioniert:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
textview.setText(Html.fromHtml(your string, Html.FROM_HTML_MODE_LEGACY));
} else {
textview.setText(Html.fromHtml(your string);
}
Dies ist ein Beispiel für die Verwendung von nbsp in einer TextView
<string name="text">Example:\u00A0</string>
Das sollte \u00A0 sein
– Poitroae
26. März 2014 um 19:07 Uhr