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/

5voto

java dev Points 340

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.

5voto

n.m. Points 540

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.

4voto

Killer Points 1737

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);

0 votes

Pour un affichage correct de l'UTF-8, vous devez définir le type MIME sur "text/html ; charset=UTF-8".

4voto

samuel gildas Points 31
String value = html value ....
mTextView.setText(Html.fromHtml(value),TextView.BufferType.SPANNABLE)

4voto

shylendra Points 3399

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.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