¿Cómo mostrar HTML en TextView?
Tengo HTML simple :
<h2>Title</h2><br>
<p>description here</p>
Quiero mostrar texto con estilo HTML en formato TextView
. ¿Como hacer esto?
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)
}
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));
}
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.
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"/>
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.