web-dev-qa-db-fra.com

Comment rendre les chaînes XML en gras, souligné, etc.?

http://docs.fusioncharts.com/charts/contents/Styles/Font.html

J'ai essayé cela, avec beaucoup de choses, mais j'ai échoué ... Voici ce que je veux.

<string name="ss">Bold. Underlined. Italic. Big. Small</string>

Je veux formater un peu de la chaîne . Là où il est écrit en gras, je veux que ce soit gras ... et pareil pour les autres.

J'ai essayé beaucoup de tags ... mais bon, rien n'a fonctionné, et je n'ai rien trouvé sur Google ou SO.

Je sais comment le faire en mode texte, mais ce n'est pas ce que je veux ...

J'envoie une ressource texte à une activité qui la montre .... __ Si je le faisais avec différentes vues, je devrais en créer plusieurs, une nouvelle pour chaque fois que je veux du texte en gras, pas très élégant.

Y a-t-il un moyen simple de faire cela dans le fichier XML? ou d'une autre manière?

13
user2599101

Essayez d’emballer votre texte marqué dans des balises CDATA. Par exemple:

<string name="ss"><![CDATA[<b>Bold.</b> <u>Underlined.</u> <i>Italic.</i> <big>Big.</big> <small>Small</small>]]></string>

Et utilisez ensuite Html.fromHtml où vous voulez l’afficher:

Html.fromHtml(getString(R.string.ss))
19
jblack

Ce problème me rend fou depuis des lustres. C'est quelque chose de tellement simple que vous voulez juste que ça fonctionne !!!

Quoi qu'il en soit, j'ai trouvé une réponse ici à http://www.coderzheaven.com/2011/06/19/styling-text-in-Android-through-xml/

La clé est de charger la ressource en tant que CharSequence en utilisant getResources().getText(R.string.xxxx). Cela conservera toutes les informations de style et vous permettra d'utiliser des balises de style inline . Mon erreur a été d'utiliser getString() car lors du chargement de votre ressource getString(), la chaîne perdrait toute son informations de style.

6
Uwais Iqbal

exemple: 

<string name="ss"><font size="15"><b>Parrainage</b></font><u>subscribe</u></string>

b = gras et u = souligné ..... etc

3
redIntent

Cela fonctionne pour moi. 

<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>

txt.setText(Html.fromHtml(getString(R.string.welcome_messages)));

plus de détails sur le site officiel: https://developer.Android.com/guide/topics/resources/string-resource.html#StylingWithSpannables

0
Tariqul