Ich weiß, dass ich maskierte HTML-Tags in Zeichenfolgenressourcen einfügen kann. Wenn ich mir jedoch den Quellcode für die Kontakte-Anwendung ansehe, kann ich feststellen, dass sie den HTML-Code nicht codieren müssen. Zitat aus der Kontakte-Anwendung strings.xml :
<string name="contactsSyncPlug"><font fgcolor="#ffffffff">Sync your Google contacts!</font>
\nAfter syncing to your phone, your contacts will be available to you wherever you go.</string>
Wenn ich etwas Ähnliches (wie Hello, <b>World</b>!
) versuche , wird getString()
der String leider ohne die Tags zurückgegeben (das kann ich in sehen logcat
). Warum ist das so? Wie kann ich die Originalzeichenfolge mit Tags und allem erhalten? Wie macht die Kontaktanwendung das?
\"
fürstyle
Eigentum verwenden. Beispiel<a style=\"...\">link</a>
Es scheint
getString()
genau das zu tun - bekommt eine Zeichenfolge . Um dies zu verwenden, müssen Sie verwendengetText()
(und nicht mehrHtml.fromHtml()
), dh:Es scheint jedoch, dass die
android:text
Eigenschaft genau dasselbe tut, und Folgendes ist äquivalent:Und in
strings.xml
:quelle
\n
?Die beste Lösung besteht darin, Ressourcen folgendermaßen zu nutzen:
und dann mit anzeigen:
Versuchen Sie, diese Ressource ohne
<![CDATA[ ]]>
und mit zu verwenden,tv.setText(getText(R.string.htmlsource));
und Sie werden den Unterschied sehen.quelle
Ich weiß, dass dies eine alte Frage ist, aber es scheint, dass die effizienteste Antwort noch nicht vorgeschlagen wurde.
Verwenden
HTML-escaped
Sie einfach Zeichen, damit es nicht von verarbeitet wird,getString
sondern vonHtmlCompact.fromHtml
(oder dem älterenHtml.fromHtml
).Dies unterstützt auch mehr Tags wie HTML-Links usw., nicht nur formatierungsähnliche
getString
Methoden.Zum Beispiel sollte so etwas funktionieren:
In Ihrem Fall ersetzen Sie
<
mit<
wie folgt aus :quelle
es funktioniert bei mir ohne CDATA-Block.
Ich benutze es im Layout.
quelle
Idee: Fügen Sie den HTML-Code in JSON-formatierte Dateien ein und speichern Sie sie in / res / raw. (JSON ist weniger wählerisch)
Speichern Sie die Datensätze wie folgt in einem Array-Objekt:
So lesen Sie die Daten in Ihrer App:
Schließlich ist die
Data
Klasse nur ein Container mit öffentlichen Variablen für den einfachen Zugriff ...quelle