Android enlace activo de url en TextView
Tengo texto dinámico de un servicio web y mostrando lo mismo en un TextView. A veces TextView tiene url como <a href="http://hello.com">hello</a>
. He fijado el texto usando el código siguiente.
textView.setText(Html.fromHtml(sampletext));
Y también establecer android:autoLink="web"
en el correspondiente xml de que contiene el TextView
. Ahora el enlace está mostrando correctamente con el color azul y el subrayado, pero encontré el es sólo un enlace muerto. Nada está sucediendo si intentamos hacer clic en él. ¿Qué debo hacer para que el enlace esté activo?
- ¿Cómo establecer un hipervínculo en textview clicable? Android Java
- Android detecta cambio de URL de webview
- ¿Por qué WebView no puede abrir algunas URL locales (Android)?
- Enviar URL a través de NFC para ser abierto por el navegador
- Android: no se muestra ImageView con UIL y TouchImageView
- Codificación de URL en Android
- ShouldInterceptRequest en Android 4.4 KitKat
- Android responde a la URL en intención
- No puede abrir la URL de twitter en la vista web de android
- Android: cita única escapada misteriosa en nombre de lugar codificado Uri
- Abrir URL en WebView en lugar del explorador predeterminado
- URL para abrir la aplicación de facebook en android
- Cómo obtener URL de enlace en Android WebView con HitTestResult para una imagen vinculada (y no la URL de imagen) con Longclick
Después de revisar todas las soluciones, un resumen con algunas explicaciones:
android:autoLink="web"
Encontrará una URL y crear un enlace, incluso si android: linksClickable no está establecido, los enlaces son por defecto clicable. No tiene que mantener la URL sola, incluso en medio de un texto se detectará y se podrá hacer clic.
<TextView android:text="My web site: www.stackoverflow.com" android:id="@+id/TextView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:autoLink="web"> </TextView>
Para establecer un enlace a través del código, el mismo principio, no hay necesidad de patrón o android: autoLink en el diseño, el enlace se encuentra automáticamente utilizando Linkify:
final TextView myClickableUrl = (TextView) findViewById(R.id.myClickableUrlTextView); myClickableUrl.setText("Click my web site: www.stackoverflow.com"); Linkify.addLinks(myClickableUrl, Linkify.WEB_URLS);
Esto funciona para mí:
<TextView android:text="www.hello.com" android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:autoLink="web"> </TextView>
Para ahorrar una vez la verdadera solución es
<TextView android:text="www.hello.com" android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:autoLink="web" android:linksClickable="true"> </TextView>
Y lo uso y funciona perfecto
Echa un vistazo a este enfoque:
String text = "Visit stackoverflow.com"; TextView label = new TextView(this); label.setText(text); Pattern pattern = Pattern.compile("stackoverflow.com"); Linkify.addLinks(label, pattern, "http://");
He dado una idea que he encontrado
TextView tv = ( TextView ) findViewById( R.id.link ); WebView wv = ( WebView ) findViewById( R.id.webView ); URLSpan[] urlSpans = tv.getUrls(); for ( URLSpan urlSpan : urlSpans ) { wv.loadUrl( urlSpan.getURL() ); }
String.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Hello, Android</string> <string name="link">'<a href="http://www.google.com" rel="nofollow">Google</a>'</string> </resources>
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/link" android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="all" android:linksClickable="true" android:text="@string/link" /> <WebView android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" /> </LinearLayout>
En tu XML, debes añadir android:linksClickable="true"
en el TextView.
- Cómo quitar la notificación de la barra de notificación mediante programación en android?
- ¿Cómo obtener datos de vista previa sin procesar de un objeto de cámara al menos 15 cuadros por segundo en Android?