HtmlTextView es un componente TextView extendido para Android, que puede cargar componentes HTML convirtiéndolos en Android Spannables para su visualización. Además de las etiquetas HTML, la biblioteca permite cargar imágenes desde la carpeta dibujable local o desde Internet y también URL desde Internet. En este artículo, mostraremos texto, imágenes y URL en Android usando componentes Html.
Implementación paso a paso
Paso 1: Crear un nuevo Proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: agregue esto en el archivo AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
Agregue esto en el archivo build.gradle
implementation 'org.sufficientlysecure:html-textview:4.0'
Paso 3: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" /> <org.sufficientlysecure.htmltextview.HtmlTextView android:id="@+id/text2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16sp" /> <org.sufficientlysecure.htmltextview.HtmlTextView android:id="@+id/text3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16sp" /> </LinearLayout>
Paso 4: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código para el archivo MainActivity.java
Spanned spanned= HtmlFormatter.formatHtml(new HtmlFormatterBuilder() .setHtml("<p><big><bold>GeeksForGeeks</bold></big><p>")); // load text using HtmlFormatterBuilder text2.setHtml("<font color='blue'><a href='https://www.google.com'</a>Go to this link</font>"); text2.setOnClickATagListener(new OnClickATagListener() { @Override public boolean onClick(View widget, String spannedText, @Nullable String href) { Toast.makeText(getApplicationContext(),href,Toast.LENGTH_LONG).show(); return false; } }); // loading image using HtmlAssetsImageGetter text1.setHtml("Load Image From Asset<br><img src='image.png'/>",new HtmlAssetsImageGetter(text1));
MainActivity.java
Java
import android.os.Bundle; import android.text.Spanned; import android.view.View; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import org.sufficientlysecure.htmltextview.HtmlAssetsImageGetter; import org.sufficientlysecure.htmltextview.HtmlFormatter; import org.sufficientlysecure.htmltextview.HtmlFormatterBuilder; import org.sufficientlysecure.htmltextview.OnClickATagListener; public class MainActivity extends AppCompatActivity { TextView gtext; org.sufficientlysecure.htmltextview.HtmlTextView text1, text2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gtext = findViewById(R.id.text); text1 = findViewById(R.id.text2); text2 = findViewById(R.id.text3); Spanned spanned = HtmlFormatter.formatHtml(new HtmlFormatterBuilder().setHtml(" <p><big><bold>GeeksForGeeks</bold></big> <p>")); gtext.setText(spanned); text2.setHtml("<font color='blue'><a href='https://www.google.com'</a>Go to this link</font>"); text2.setOnClickATagListener(new OnClickATagListener() { @Override public boolean onClick(View widget, String spannedText, @Nullable String href) { Toast.makeText(getApplicationContext(), href, Toast.LENGTH_LONG).show(); return false; } }); text1.setHtml("Load Image From Asset<br><img src='image.png'/>", new HtmlAssetsImageGetter(text1)); } }
Producción: