web-dev-qa-db-fra.com

Android Html.fromHtml (String) ne fonctionne pas pour le <font color = '#'> texte </font>

J'essaie d'ajouter des lignes avec des couleurs différentes à mon TextView en utilisant des balises html.

Pour quelque raison que ce soit,

    Html.fromHtml("<font color='#145A14'>text</font>");

n'apparaîtra pas en couleur dans TextView.

43
Chris
Html.fromHtml("<font color='#145A14'>text</font>");

Au lieu de ci-dessus, veuillez utiliser ce qui suit

Html.fromHtml("<![CDATA[<font color='#145A14'>text</font>]]>");

Cela a fonctionné pour moi et je suis sûr que cela fonctionnera également pour vous.

Faites-moi savoir en cas de problème.

53
Bipin Vayalu

Ma réponse implique des conjectures sur votre code, mais voici:

Lorsque vous utilisez la balise font: N'incluez PAS de canal alpha pour que votre chaîne hexadécimale ressemble à "# ff123456". Si vous utilisez Integer.toHexString (), vous aurez un canal alpha dans ce résultat.

Cela a fonctionné lorsque j'ai utilisé substring (2) sur ma chaîne hexadécimale de rescource.

Pour résumer:

text.setText(Html.fromHtml("<font color='#123456'>text</font>"));

fonctionnera, mais:

text.setText(Html.fromHtml("<font color='#ff123456'>text</font>"));

habitude!

23
Andreas Rudolph

Assurez-vous de désactiver tous les modificateurs tels que:

Android:textAllCaps="true"
20
Semko Toruj

La méthode fromHtml est extrêmement limitée en termes de balises HTML qu'elle prend en charge, et la police n'en fait pas partie. Voir http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html pour une liste non officielle. J'ai fait moi-même des recherches à ce sujet et j'ai découvert que fromHtml est basé sur un moteur de rendu obscur et mal documenté.

5
Philip Sheard

J'utilise ce code

Html.fromHtml(convertToHtml("<font color='#145A14'>text</font>"));

public String convertToHtml(String htmlString) {

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("<![CDATA[");
    stringBuilder.append(htmlString);
    stringBuilder.append("]]>");
    return stringBuilder.toString();
}
4
Cabezas

Cela ressemble à une couleur très sombre, êtes-vous sûr que votre écran est capable d'afficher de telles couleurs, vous pouvez donc les distinguer du noir? L'extrait de code semble bon, j'ai essayé plusieurs fois un code similaire et cela a fonctionné comme un charme. Essayez-le avec un peu plus lumineux, c'est-à-dire # ff0000 (rouge), pour vérifier que cela fonctionne:

TextView text = ... // find or instantinate your text view.
text.setText(Html.fromHtml("<font color='#ff0000'>text</font>"));
2
Konstantin Burov
textView.setText(Html.fromHtml("<font color='blue'>text</font>"));
2
Devendra Anurag

Assurez-vous que votre valeur RVB est CAPITALISÉE. Android peut comprendre # 00FF00 mais pas # 00ff00.

1
Lenny T

Ouais je suis d'accord, ça ne marche pas parfois.

Comme alternative, j'utilise en xml pour Textview:

Android:textColorLink="yourColor"

fonctionne comme un charme;)

1
abhishekm473

essayez ceci et cela devrait fonctionner

 textView.setText(Html.fromHtml("<font color=\"#145A14\">text</font>"));
1
Houcine
txt_description1.setText(Html.fromHtml("<font color='rgb'>"+str_description1+"</font>"));

Si vous ne voulez pas une seule couleur statique et que vous souhaitez refléter directement depuis l'éditeur, vous pouvez utiliser "rgb". Il reflétera la couleur exacte que vous avez définie dans l'éditeur, il suffit de la définir dans textview et concat avec la valeur textview. Et vous êtes prêt à partir.

0
Naina