Android: Convertir URLs en enlaces dentro de un TextView

septiembre 8, 2017

Si el texto que vamos a mostrar en un TextView contiene código HTML, se visualizarán correctamente los enlaces, negritas, etc. Deberemos hacerlo de así desde código:

textView1.setText(
    Html.fromHtml("Mi <strong>página web</strong>: " + 
        "<a href="http://jonsegador.com">http://jonsegador.com</a>")
);

En cambio, si el texto no está en formato HTML pero contiene URLs (sin las etiquetas <a>), podemos convertir a enlace cualquier URL que aparezca en el texto.
Para ello, utilizaremos el siguiente atributo del TextView:

android:autoLink="web"

Este atributo buscará todas las URLs dentro del texto y los convertirá a enlace. No hace falta indicar el atributo android:linksClickable ya que por defecto serán clickables.
El TextView completo quedaría así:

<TextView
    android:id="@+id/TextView1"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:text="Mi página web: http://jonsegador.com"
    android:autoLink="web">
</TextView>

También lo podemos hacer vía código, sin necesidad de indicar el atributo android:autoLink en el layout. Para ello utilizaremos Linkify:

  final TextView textView1 = (TextView) findViewById(R.id.TextView1);
  textView1.setText("Mi página web: http://jonsegador.com");
  Linkify.addLinks(textView1, Linkify.WEB_URLS);

Si además queremos cambiar el color del enlace, incluiremos el siguiente atributo en el TextView:

android:textColorLink="@color/link_color"

El TextView final quedaría así:

<TextView
    android:id="@+id/TextView1"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:text="Mi página web: http://jonsegador.com"
    android:autoLink="web"
    android:textColorLink="@color/link_color" >
</TextView>
CompartirTweet about this on TwitterShare on TumblrShare on FacebookShare on LinkedInShare on Google+Email this to someone

Tags ; , , ,

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.