Enlaces en TextView

Necesito poner un enlace en un TextView , tengo una cadena que contiene la etiqueta Text for https://stackoverflow.com/questions/4790746/links-in-textview/link y algún otro texto. El problema es que si ejecuto el proyecto, puedo ver el texto pero no se puede hacer clic. Intenté con la etiqueta también para ver si funciona y parece que tampoco funciona.

¿Cómo puedo hacer que esto funcione sin el uso de Linkify ?

Gracias por tu ayuda.

He logrado hacer que esto funcione, después de haber encontrado algunos ejemplos en las muestras de Android.

aquí está el código:

 textView.setText(Html.fromHtml( "text3: Text with a " + "link " + "created in the Java source code using HTML.")); textView.setMovementMethod(LinkMovementMethod.getInstance()); 

Espero que esto ayude a otros …

Obtener vínculos trabajando desde html es un poco complicado:

  1. Aplica tu texto a través de xml android:text="@string/… o mediante setText() (mira otras respuestas)

  2. Use textView.setMovementMethod(LinkMovementMethod.getInstance()) para hacer que los enlaces se puedan hacer clic (ver otras respuestas)

  3. NO agregue android:autoLink="web" a su recurso XML (sección TextView ); de lo contrario, las tags A no se mostrarán correctamente y ya no se podrá hacer clic.

Observación 1:
OnClickListener puede ser útil, si su TextView contiene solo un enlace y desea activar la navegación, incluso si el usuario hace clic en su enlace, pero dentro de TextView .

Observación 2:
android:linksClickable="true" todavía no funciona (a partir de Android 3.2), use p. 2 en cambio

Linkify es la clase que debe usar para crear enlaces. Por cierto, ¿cuál es el motivo para no usar Linkify?

Puede vincular todo el texto en su vista de texto para acciones como visitar un sitio web o llamar a un número de teléfono según el esquema. Android proporciona la forma más fácil de hacerlo. Considera el siguiente código.

 TextView noteView = (TextView) findViewById(R.id.noteview); noteView.setText(someContent); Linkify.addLinks(noteView, Linkify.ALL); 

Para crear enlaces personalizados, la misma clase Linkify proporciona varias opciones. Google ha publicado una publicación de blog sobre esto .

No pude resolverlo, pero finalmente comenzó a funcionar cuando hice algo como:

 tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html))); Linkify.addLinks(tvTermsOfUse, Linkify.ALL); tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance()); 

La vista de texto se ve así:

  

y cadena res:

  Google.]]>  

Parte importante: Linkify.addLinks debe hacerse antes de tvTermsOfUse.setMovementMethod ; de lo contrario, no funcionará.

No se necesitan otras configuraciones en XML.

Me tomó aproximadamente una hora resolverlo yo mismo, espero que ayude a alguien.

EDITAR:

De acuerdo con el comentario de @rfellons

Gracias. También para mí funciona … PERO solo con

  

en Manifest.xml. – rfellons 7 de septiembre a las 13:31

Asegúrate de verificarlo también.

Utilizar

 android:linksClickable="true" android:autoLink="web" 

No puedo responder a tu respuesta por alguna razón; Solo quería decir que puedes omitir textView.setText y simplemente ponerlo en un recurso de cadena, y configurar eso con android:text . Solo necesita mantener el textView.setMovementMethod(LinkMovementMethod.getInstance()); ; Desafortunadamente, android:linksClickable="true" por sí solo no funciona.

La solución: Linkify.addLinks (chatText, Linkify.ALL);

Esto funciona bastante correcto: (en las propiedades de la vista de texto, dentro del archivo xml)

 android:autolink="web" 

Para agregar los enlaces dinámicamente (extraídos del servidor), esto funciona:

 textView.setText(Html.fromHtml( "" + context.getString(R.string.link_from_server) + " ")); 

y en XML, agregue esto:

 android:linksClickable="true" 

Si su strings.xml tiene esto:

 Dynamic Link 

Esto agregará “Enlace dynamic” a su vista de texto y si toca esto, irá al enlace proporcionado por su servidor.