2012-07-31 6 views
6

Medio Ambiente: que tienen un Android ListView con filas que consisten en TextViews contienen algo de HTML con enlaces sangrables (URLSpans). En ListView, configuré OnItemLongClickListener para escuchar eventos de clics largos en filas individuales.ListView onItemLongClickListener no impide enlace grifos

Objetivo: Cuando recibo un evento de clic de largo, que desea desactivar los grifos en los enlaces para el mismo evento táctil, pero no veo cómo hacer esto. El clic largo se dispara correctamente, pero tan pronto como levanto mi dedo, el enlace también se activa.

lo que he intentado ya: He intentado devolver cierto (y falso) en el método onItemLongClick - no parece hacer una diferencia en ambos sentidos. He intentado interceptar el MotionEvent.ACTION_UP después de un clic largo para poder consumir temporalmente el enlace, pero el ACTION_UP no se activa, al menos no en el ListView.

Respuesta

1

he hecho un poco más la búsqueda y que esta respuesta a una pregunta similar: Android TextView Linkify intercepts with parent View gestures

que utiliza los conceptos de esta respuesta para resolver mi problema. Extendí la clase TextView y anulé onTouchEvent y busco para ver si estoy tocando un enlace en eventos de aterrizaje. Si lo estoy, guardo ese enlace y lo "hago clic" programáticamente en mi ListView.onItemClick si no encuentro primero un LongClick. Yuck.

Si alguien más tiene una manera más elegante de resolver el problema, publíquelo y aceptaré su respuesta si funciona. Si no, aceptaré mi propia respuesta en unos días.

Cuestiones relacionadas