2012-07-31 10 views
6

Ambiente: Ho un Android ListView con le righe che consistono di TextViews contenenti alcune HTML con link tappable (URLSpans). In ListView, ho impostato un OnItemLongClickListener per ascoltare gli eventi di clic lungo su singole righe.ListView onItemLongClickListener non impedisce collegamento rubinetti

Obiettivo: Quando ricevo un lungo evento click, mi desidera disattivare i rubinetti sui link per lo stesso evento di tocco, ma io non sto vedendo come fare questo. Il clic lungo si attiva correttamente, ma non appena sollevo il dito, si attiva anche il collegamento.

che cosa ho provato già: Ho provato restituendo vero (e false) sul metodo onItemLongClick - non sembra fare la differenza in entrambi i casi. Ho provato ad intercettare lo MotionEvent.ACTION_UP dopo un lungo clic in modo da poter temporaneamente consumare il collegamento, ma il ACTION_UP non si attiva, almeno non sullo ListView.

risposta

1

ho fatto un po 'di ricerca e trovato questa risposta a una domanda simile: Android TextView Linkify intercepts with parent View gestures

ho usato i concetti da questa risposta per risolvere il mio problema. Ho esteso la classe TextView e ho annullato onTouchEvent e ho cercato di vedere se sto toccando un link su eventi di ritocco. Se lo sono, salvi il link e lo "clicco" a livello di programmazione sul mio ListView.onItemClick se non ho riscontrato prima uno LongClick. Che schifo.

Se qualcun altro ha un modo più elegante per risolvere il problema, pubblicalo e accetterò la tua risposta se funziona. In caso contrario, accetterò la mia risposta tra qualche giorno.

Problemi correlati