2012-03-12 14 views
11

Ho una verticale LinearLayout. Funzionerà come una barra di salto rapido. Quindi la larghezza è molto piccola e l'altezza corrisponde quasi all'intera altezza dello schermo. Quando lo tocco e mi muovo all'interno, va tutto bene. Ciò significa che il mio onTouchEvent() viene chiamato e posso ottenere (e seguire) la posizione del dito. Ma dal momento che la barra non è molto ampia, l'utente può facilmente andare alla deriva al di fuori di quella vista. Quindi sarebbe necessario lasciare che l'utente continui il movimento anche al di fuori della vista. Di fatto, fa la stessa cosa di un ListView.Come estendere l'area tattile di una vista

Non so il motivo per cui s' onTouchEvent() è chiamato anche al di fuori del ListView, un ListView ma non nel caso di mia LinearLayout. L'ho rintracciato allo dispatchTouchEvent(). Qui la situazione è la stessa che viene sempre chiamato per il metodo ListView (anche quando fuori) ma non nel caso dello LinearLayout (quando ci si sposta all'esterno).

Sarei molto felice se qualcuno potesse darmi un suggerimento. Molte grazie!

Bernd

+0

possibile duplicato di [C'è un esempio di come utilizzare un TouchDelegate in Android per aumentare le dimensioni del target di clic di una vista?] (Http://stackoverflow.com/questions/1343222/is-there-an-example- di-how-to-use-a-touchdelegate-in-android-to-aumentare-the-siz) –

risposta

7

Si potrebbe utilizzare la funzione di Android TouchDelegate. Supporta un'area di tocco più grande per viste singole. Ecco un esempio: https://stackoverflow.com/a/1343796/636579

+2

Sì, ho già visto quel post, ma per quanto ho capito è possibile estenderlo alla dimensione del prossimo genitore . Ciò significherebbe, per ottenere l'altezza dello schermo intero, l'intera struttura della vista deve essere valutata. Non ero in grado di capire come ListView fa questo trucco. – Bernd

5

penso che si dovrebbe provare ad aumentare l'imbottitura di una vista da tutti i lati in modo che quando l'utente cliccherà vicino alla vista nella zona di imbottitura metodo ontouch o onClick sarà chiamato

android:padding="10dp" 
Problemi correlati