Come posso mantenere eventi ontouch gestiti da un widget, anche se al tocco coordinate non sono all'interno del widget di più, in Android

StackOverflow https://stackoverflow.com/questions/6803959

Domanda

Ci scusiamo per la complessa questione lasciatemi spiegare. Ho creato un custom widget di che gestisce alcuni eventi ontouch. Quello che voglio fare è quando inizio un evento di tocco su quel widget personalizzato (onDown) Voglio che widget di mantenere la gestione questi eventi anche se i coordinamenti assoluti non sono in quel widget.

Ho uno ScrollView e per di più (all'interno del ScrollView) un widget che maniglie (sinistra - destra) scorre. Ma se mi muovo il dito verticalmente gli eventi ontouch sono consumati e gestite dal scollview. Se c'è un modo per forbit ScrollView a eventi maniglia tocco, o meglio forzare il widget personalizzato per mantenere la gestione della TouchEvent, se mi metto l'ontouchEvent all'interno del widget personalizzato?

UPDATE mi sono imbattuto in che http: // gruppi .google.com / gruppo / android-framework / browse_thread / thread / 2cdd4269dfb2772e? pli = 1 .

che funziona nel mio caso, se l'usanza widget di NON è all'interno di una vista a scorrimento come "ScrollView". Cercando di risolvere il "Beeing all'interno di un oggetto di scorrimento. Come non inviare questi sul touchevents al genitore? Tornando vero non risolve il problema

È stato utile?

Soluzione

In handler onTouch del widget (per esempio durante ACTION_MOVE), chiamare il parent.requestDisallowInterceptTouchEvent (true) . Tale metodo fondamentalmente chiede il genitore (nel tuo caso la ScrollView) e la sua antenata di non intercettare l'evento di tocco.

Altri suggerimenti

Sarà necessario implementare una sottoclasse speciale di ScrollView, che permette il tuo widget per dirgli di scorrimento disabilitare quando lo si desidera (in modo che non si avvia lo scorrimento dopo il movimento abbastanza e prendere gli eventi dal tuo widget). Lo ScrollView personalizzato può ignorare questo metodo:

http://developer.android. com / riferimento / android / widget di / ScrollView.html # onInterceptTouchEvent (android.view.MotionEvent )

Quando non si desidera che la classe base di consumare eventi touch per scorrere, falso ritorno qui invece di chiamare l'implementazione di base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top