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 ?
Utilisation simple Html.fromHtml("html string")
. Cela fonctionnera. Si la chaîne comporte des balises comme <h1>
alors les espaces viendront. Mais nous ne pouvons pas éliminer ces espaces. Si vous voulez quand même supprimer les espaces, vous pouvez supprimer les balises dans la chaîne de caractères et ensuite passer la chaîne à la méthode Html.fromHtml("html string");
. De plus, ces chaînes proviennent généralement du serveur (dynamique) mais pas souvent, si c'est le cas, il vaut mieux passer la chaîne telle quelle à la méthode que d'essayer de supprimer les balises de la chaîne.
Si vous utilisez androidx.
* dans votre projet, vous devez utiliser HtmlCompat.fromHtml(text, flag)
.
La source de la méthode est :
@NonNull
public static Spanned fromHtml(@NonNull String source, @FromHtmlFlags int flags) {
if (Build.VERSION.SDK_INT >= 24) {
return Html.fromHtml(source, flags);
}
//noinspection deprecation
return Html.fromHtml(source);
}
Il est préférable d'utiliser HtmlCompat.fromHtml
que Html.fromHtml
car il y a moins de code - seulement une ligne de code, et c'est la façon recommandée de l'utiliser.
J'ai mis en œuvre cette fonction en utilisant la vue Web. Dans mon cas, je dois charger l'image depuis l'URL avec le texte dans la vue texte et cela fonctionne pour moi.
WebView myWebView =new WebView(_context);
String html = childText;
String mime = "text/html";
String encoding = "utf-8";
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadDataWithBaseURL(null, html, mime, encoding, null);
Créez une méthode globale comme :
public static Spanned stripHtml(String html) {
if (!TextUtils.isEmpty(html)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT);
} else {
return Html.fromHtml(html);
}
}
return null;
}
Vous pouvez également l'utiliser dans votre Activité/Fragment comme :
text_view.setText(stripHtml(htmlText));
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.