Je sais que je peux mettre des balises HTML échappées dans des ressources de chaîne. Cependant, en regardant le code source de l'application Contacts, je peux voir qu'ils ont un moyen de ne pas avoir à encoder le HTML. Citation de l'application Contacts 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>
Malheureusement, lorsque j'essaye quelque chose de similaire (comme Hello, <b>World</b>!
), getString()
renvoie la chaîne sans les balises (je peux le voir dans logcat
). Pourquoi donc? Comment puis-je obtenir la chaîne d'origine, avec les balises et tout? Comment fonctionne l'application Contacts?
\"
pour lastyle
propriété, cependant. Exemple<a style=\"...\">link</a>
Il semble
getString()
faire exactement cela - obtient une chaîne . Pour l'utiliser, vous devez utilisergetText()
(et pas plusHtml.fromHtml()
), c'est-à-dire:Cependant, il semble que la
android:text
propriété fasse exactement la même chose, et ce qui suit est équivalent:Et dans
strings.xml
:la source
\n
?La meilleure solution consiste à utiliser les ressources d'une manière:
et ensuite l'afficher avec:
Essayez d'utiliser cette ressource sans
<![CDATA[ ]]>
et avectv.setText(getText(R.string.htmlsource));
et vous verrez la différence.la source
Je sais que c'est une vieille question mais il semble que la réponse la plus efficace n'ait pas encore été proposée.
Utilisez simplement des
HTML-escaped
caractères pour qu'il ne soit pas traité pargetString
mais il sera traité parHtmlCompact.fromHtml
(ou par le plus ancienHtml.fromHtml
).Cela prend également en charge plus de balises comme les liens HTML, etc., pas seulement le formatage comme la
getString
méthode.Par exemple, quelque chose comme ça devrait fonctionner:
Dans votre cas, vous remplacez
<
par<
comme ceci:la source
cela fonctionne pour moi sans bloc CDATA.
Je l'utilise en layout.
la source
Idée: mettez le HTML dans des fichiers au format JSON et stockez-les dans / res / raw. (JSON est moins pointilleux)
Stockez les enregistrements de données comme ceci dans un objet tableau:
Pour lire les données dans votre application:
Enfin, la
Data
classe n'est qu'un conteneur de variables publiques pour un accès facile ...la source