Pregunta ¿Cómo mostrar HTML en TextView?


Tengo simple HTML:

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

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


624


origen


Respuestas:


Tienes que usar Html.fromHtml() usar HTML en tus Cadenas XML Simplemente haciendo referencia a una cadena con HTML en su diseño XML no funcionará.

Por ejemplo (<Android Nougat):

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

Por ejemplo (> = Android Nougat):

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

Para distinguir entre las versiones de Android use Build.VERSION.SDK_INT >= Build.VERSION_CODES.N.


1098



Echa 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 solo para algunas etiquetas.


56



setText (Html.fromHtml (bodyData)) es obsoleto después de 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));
 }

54



Si desea poder configurarlo a través de xml sin ninguna modificación en el código de Java, puede que le resulte útil esta idea. Simplemente llama a init desde el constructor y establece 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"/>

34



El siguiente código me dio el mejor resultado.

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

19



Si intenta mostrar HTML a partir de una ID de recurso de cadena, es posible que el formato no aparezca en la pantalla. Si eso le sucede, intente 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));

Mira esto enviar para mas detalles.


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



Si solo quieres mostrar texto html y realmente no necesitas un TextView, luego toma una WebView y úsalo como sigue:

String htmlText = ...;
webview.loadData(htmlText , "text/html; charset=UTF-8", null);

Esto tampoco te restringe a algunas etiquetas html.


9