893 votes

Comment afficher du HTML dans un TextView ?

J'ai de simples HTML :

<h2>Title</h2><br>
<p>description here</p>

Je veux afficher du texte stylé en HTML en TextView . Comment faire ?

8 votes

Voulez-vous afficher les balises ou les omettre ?

1 votes

Consultez ce lien pour un exemple fonctionnel javatechig.com/2013/04/07/how-to-display-html-in-Android-view

1 votes

Si vous cherchez la solution de l'obsolescence, c'est ici. stackoverflow.com/questions/37904739/

10voto

Teo Inke Points 176

Il convient de mentionner que la méthode Html.fromHtml(String source) est déprécié à partir du niveau 24 de l'API. Si c'est votre API cible, vous devriez utiliser Html.fromHtml(String source, int flags) à la place.

10voto

Roman Points 79

Créé Kotlin extensions à convertir html de Chaîne de caractères -

fun String?.toHtml(): Spanned? {
    if (this.isNullOrEmpty()) return null
    return HtmlCompat.fromHtml(this, HtmlCompat.FROM_HTML_MODE_COMPACT)
}

0 votes

Excellente extension, merci

6voto

Fedotchenco Denis Points 111

Je voudrais également suggérer le projet suivant : https://github.com/NightWhistler/HtmlSpanner

L'utilisation est presque la même que celle du convertisseur Android par défaut :

(new HtmlSpanner()).fromHtml()

Je l'ai trouvé après avoir déjà commencé ma propre implémentation du convertisseur html vers spannable, parce que le standard Html.fromHtml ne fournit pas assez de flexibilité sur le contrôle du rendu et même aucune possibilité d'utiliser des polices personnalisées à partir de ttf.

0 votes

J'obtiens l'erreur suivante : Error :(80, 13) Failed to resolve : com.osbcp.cssparser:cssparser:1.5 Comment puis-je résoudre ce problème ?

6voto

Paul Lammertsma Points 12817

Il a été suggéré, par le biais de diverses réponses, d'utiliser les Html comme suggéré ici, mais malheureusement, cette classe a un comportement différent dans les différentes versions d'Android et plusieurs bogues non corrigés, comme le montrent les problèmes suivants 214637 , 14778 , 235128 et 75953 .

Vous pouvez donc utiliser une bibliothèque de compatibilité pour normaliser et reporter la classe Html sur toutes les versions d'Android, qui comprend davantage de rappels pour les éléments et le style :

Projet Github HtmlCompat

Bien qu'elle soit similaire à la classe Html du framework, quelques changements de signature ont été nécessaires pour permettre plus de callbacks. Voici l'échantillon de la page GitHub :

Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0);
// You may want to provide an ImageGetter, TagHandler and SpanCallback:
//Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0,
//        imageGetter, tagHandler, spanCallback);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(fromHtml);

0 votes

@MartijnPieters La réponse précédemment fermée était un duplicata d'une réponse à cette question en relation avec la dépréciation d'une méthode-cadre . J'ai développé la raison pour laquelle l'utilisation d'une bibliothèque de compatibilité serait une meilleure approche. Je ne pense pas qu'il soit raisonnable de signaler les deux questions comme étant des doublons, car elles sont clairement différentes.

6voto

Sandeep Pareek Points 180

utilisez simplement enter image description here

checkBoxTextView.text =
        Html.fromHtml("<p><font color=#666666>I agree to</font><font color=#0173B7>  <b><u>Terms & Conditions</u></b></font><font color=#666666> and the <u></font><b><font color=#0173B7>Privacy Policy</font></u></b></font></p>")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X