Android: hipervínculo textview

Sé que si pones un enlace en una vista de texto funcionará, pero si quiero mostrar, por ejemplo:

google stackoverflow

y no todo el enlace (solo la etiqueta) ¿Cómo puedo hacer que se haga clic en esos enlaces?

Puede tener dos TextViews separados y, si es necesario, puede alinearlos en su diseño:

Text1.setText( Html.fromHtml( "google ")); Text1.setMovementMethod(LinkMovementMethod.getInstance()); Text2.setText( Html.fromHtml( "stackoverflow ")); Text2.setMovementMethod(LinkMovementMethod.getInstance()); 

Luego, si quiere quitar el “subrayado del enlace”. Crear una clase:

 public class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String url) { super(url); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } } 

A continuación, agregue este método en su clase de actividad principal donde tiene TextViews

 private void stripUnderlines(TextView textView) { Spannable s = new SpannableString(textView.getText()); URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class); for (URLSpan span: spans) { int start = s.getSpanStart(span); int end = s.getSpanEnd(span); s.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); s.setSpan(span, start, end, 0); } textView.setText(s); } 

Y luego solo llame a esto después de inicializar TextViews (en su onCreate):

 stripUnderlines(Text1); stripUnderlines(Text2); 
 TextView t2 = (TextView) findViewById(R.id.textviewidname); t2.setMovementMethod(LinkMovementMethod.getInstance()); 

y

 google stack overflow 

El enlace es ” Android: hipervínculo textview ”

y la etiqueta es “desbordamiento de la stack de google”

Defina el primer bloque de código en su java y el segundo bloque de código en su archivo strings.xml. Además, asegúrese de hacer referencia a la id de textView desde su diseño de página en su java.

Una forma muy simple de hacer esto —

En tu actividad–

  TextView tv = (TextView) findViewById(R.id.site); tv.setText(Html.fromHtml(" STACK OVERFLOW ")); tv.setMovementMethod(LinkMovementMethod.getInstance()); 

Entonces obtendrás solo la etiqueta, no todo el enlace.

Espero que te ayude…

android:autoLink="web" simplemente funciona si tienes enlaces completos en tu HTML. Lo siguiente se resaltará en azul y se puede hacer clic:

Esto debería funcionar.

 TextView t2 = (TextView) findViewById(R.id.text2); t2.setMovementMethod(LinkMovementMethod.getInstance()); and  

Esta es mi implementación de trabajo

 private void showMessage() { lblMessage.setText(""); List messages = db.getAllGCMMessages(); for (int k = messages.size() - 1; k >= 0; --k) { String message = messages.get(k).toString(); lblMessage.append(message + "\n\n"); } Linkify.addLinks(lblMessage, Linkify.ALL); } 

y para cambiar el color de los hipervínculos, edité mi xml para la vista de texto –

  android:textColorLink="#69463d" 

Apunto el mismo problema y finalmente encuentro la solución de trabajo.

  1. en el archivo string.xml, defina:

     The URL link is <a href="http://www.google.com">Google</a> 

Reemplaza el carácter “<" menor que el carácter con HTML escapado.

  1. En código Java:

     String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance()); 

Y el TextBox mostrará correctamente el texto con un enlace de anclaje en el que se puede hacer clic