¿Cómo mostrar HTML en TextView?

Resuelto UMAR-MOBITSOLUTIONS asked hace 54 años • 29 respuestas

Tengo HTML simple :

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

Quiero mostrar texto con estilo HTML en formato TextView. ¿Como hacer esto?

UMAR-MOBITSOLUTIONS avatar Jan 01 '70 08:01 UMAR-MOBITSOLUTIONS
Aceptado

Debe utilizar Html.fromHtml()HTML en sus cadenas XML. Simplemente hacer referencia a una cadena con HTML en su diseño XML no funcionará.

Esto es lo que debes hacer en Java

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));
} else { 
    textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
}

Y en Kotlin:

textView.text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
} else {
    Html.fromHtml(html)
}
Boken avatar Jan 22 '2010 09:01 Boken

setText(Html.fromHtml(bodyData)) está obsoleto después de la API 24. Ahora tienes que hacer esto:

 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));
 }
 avatar Jan 11 '2017 07:01

Eche un vistazo a esto: https://stackoverflow.com/a/8558249/450148

¡¡Es bastante bueno también!!

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

Funciona sólo para unas pocas etiquetas.

Felipe avatar May 06 '2012 06:05 Felipe

Si desea poder configurarlo a través de xml sin ninguna modificación en el código java, esta idea puede resultarle útil. Simplemente llamas a init desde el constructor y configuras el texto como 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"/>
user1299412 avatar Dec 13 '2014 19:12 user1299412

Si intenta mostrar HTML a partir de una identificación de recurso de cadena, es posible que el formato no aparezca en la pantalla. Si eso te sucede, intenta usar etiquetas CDATA en su lugar:

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

Consulte esta publicación para obtener más detalles.

Phileo99 avatar Jul 08 '2016 17:07 Phileo99