Question Comment afficher du HTML dans TextView?


J'ai simple HTML:

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

Je veux afficher le texte stylé HTML dans TextView. Comment faire ça?


624


origine


Réponses:


Vous devez utiliser Html.fromHtml() utiliser HTML dans vos chaînes XML. Il suffit de référencer une chaîne avec HTML dans votre présentation XML ne fonctionnera pas.

Par exemple (<Android Nougat):

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));

Par exemple (> = Android Nougat):

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));

Pour distinguer les versions Android, utilisez Build.VERSION.SDK_INT >= Build.VERSION_CODES.N.


1098



Jetez un coup d'oeil sur ceci: https://stackoverflow.com/a/8558249/450148

C'est plutôt bien !!

<resource>
    <string name="your_string">This is an <u>underline</u> text demo for TextView.</string>
</resources>

Cela ne fonctionne que pour quelques tags.


56



setText (Html.fromHtml (bodyData)) est déconseillé après api 24. Maintenant vous devez faire ceci:

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
      tvDocument.setText(Html.fromHtml(bodyData,Html.FROM_HTML_MODE_LEGACY));
 } else {
      tvDocument.setText(Html.fromHtml(bodyData));
 }

54



Si vous voulez pouvoir le configurer via xml sans aucune modification dans le code Java, vous pouvez trouver cette idée utile. Il suffit d'appeler init du constructeur et de définir le texte en html

public class HTMLTextView extends TextView {
    ... constructors calling init...
    private void init(){
       setText(Html.fromHtml(getText().toString()));
    }    
}

xml:

        <com.package.HTMLTextView
        android:text="@string/about_item_1"/>

34



Le code ci-dessous a donné le meilleur résultat pour moi.

TextView myTextview = (TextView) findViewById(R.id.my_text_view);
htmltext = <your html (markup) character>;
Spanned sp = Html.fromHtml(htmltext);
myTextview.setText(sp);

19



Si vous essayez d'afficher du HTML à partir d'un ID de ressource de chaîne, la mise en forme peut ne pas s'afficher à l'écran. Si cela vous arrive, essayez d'utiliser des tags CDATA à la place:

strings.xml:
<string name="sample_string"><![CDATA[<h2>Title</h2><br><p>Description here</p>]]></string>

...

MainActivity.java:
text.setText(Html.fromHtml(getString(R.string.sample_string));

Regarde ça poster pour plus de détails.


15



String value = "<html> <a href=\"http://example.com/\">example.com</a> </html>";
    SiteLink= (TextView) findViewById(R.id.textViewSite);
    SiteLink.setText(Html.fromHtml(value));
    SiteLink.setMovementMethod(LinkMovementMethod.getInstance());

10