Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 05/04/16, 13:29:17
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
TextView con enlaces y detectar click donde no hay enlace

Estoy intentando meter un TextView con enlaces en un layout que a su vez tiene evento onClick definido. El problema es que aunque haga click donde no hay enlaces, el TextView se queda el evento.

La historia hasta el momento:

Poner el enlace no es mucho problema usando setText(Html.fromHtml(....)), aunque me pasó algo raro, se ponía con color de enlace pero no hacía nada al tocarlo. Buscando en SO veo que hay que usar magia negra en el TextView y llamar al método setMovementMethod(LinkMovementMethod.getInstance() ).

Ahí vienen los problemas, ahora el TextView tiene su enlace, le puedes hacer click y abre el navegador. Pero ya no me deja hacer click en el layout que lo contiene porque se come el evento. Me gustaría que si el usuario hace click en cualquier texto que no sea el enlace, el click vaya al elemento que hay debajo.

He probado a poner android:descendantFocusability="blocksDescendants" en el layout que contiene el TextView. Nada, el enlace sigue funcionando pero sigue comiéndose el evento donde no hay enlace. También he probado a poner android:focusable="false" y focusableInTouchMode en el TextView, agua.

De hecho también he probado a quitar todo eso y poner el mismo OnClickListener en el TextView con enlaces, y nada, si tiene lo del LinkMovementMethod imprescindible para que el enlace haga algo, ya no genera ningún evento onClick. (EDIT: el caso es que los click en el TextView no los coge nunca (tenga el LinkMovementMethod o no), incluso definiéndole un onClickListener, ahí ya no sé qué estaré haciendo mal)

¿Alguna sugerencia?

Última edición por mocelet Día 05/04/16 a las 14:54:49
Responder Con Cita


  #2  
Viejo 05/04/16, 13:57:25
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
¿Y con un onTouchListener?

Puedes usar el onInterceptTouchEvent sobre el layout que está debajo, el único problema es que se ejecutará siempre, tanto si pulsas un enlace como si no lo pulsas.

Yo lo usaba antes, cuando tenía que programarme mis propias listas horizontales hasta que Google vino a solucionarnos la vida con el RecyclerView.

Básicamente hace como un onTouch pero al revés, se va ejecutando por los contenedores y si está definido en alguno se ejecuta, y luego según devuelves true o false le pasa la pelota al siguiente o ya se lo queda el.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 05/04/16, 14:52:56
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Gracias, parece la única opción viable. Lo que me lleva a pensar que de momento se va a quedar como está D

Lo del TextView con enlaces es algo provisional y prefiero no complicar el código interceptando eventos. Además estoy viendo que el TextView es muy limitado para esas cosas, no puedes interceptar la URL como en los WebView y hacer lo que quieras, así que terminaré presentando la información de otra forma.

Última edición por mocelet Día 05/04/16 a las 14:55:33
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:34:28 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007