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 ?
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 ?
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.
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.
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 :
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);
@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.
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.
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/
1 votes
Textview.setText(Html.fromHtml("your HTML")) ; est la meilleure méthode pour afficher uniquement les balises HTML. Il existe également une méthode pour jouer du JS.
0 votes
Android ne prend pas en charge toutes les balises HTML. Vérifiez ceci arkapp.medium.com/Android-set-html-in-text-view-b912e1a96b21 pour mieux comprendre comment utiliser l'affichage du texte.