2011-08-16 13 views
6

Abbiamo una vista di scorrimento orizzontale principale nella nostra attività e numerose viste di scorrimento verticale nidificate al suo interno. L'idea è di scorrere orizzontalmente fino a trovare l'elenco verticale desiderato, quindi scorrere verso l'alto e verso il basso.Scorrimento annidato su Android

Idealmente, vorrei che lo scorrimento verticale avesse un "lucchetto" una volta iniziato lo scorrimento verticale. Cosa succede ora, se stai molto attento, puoi scorrere verticalmente, ma se muovi il dito un po 'troppo a sinistra/a destra mentre lo fai, i fermi verticali e l'orizzontale riprendono.

Ciò che probabilmente avrebbe senso è che qualsiasi visualizzazione di scorrimento viene "attivata" prima dal movimento, quella rimane attiva fino a quando non si termina l'interazione (cioè si toglie il dito).

Un modo per farlo funzionare in questo modo?

risposta

1

Potrebbe essere preferibile utilizzare un ViewPager per lo scorrimento orizzontale, se funzionasse per la tua app.

Se ciò non funziona, provare override del metodo onTouch dei ScrollViews verticali che impediscano la vista di scorrimento orizzontale da scorrimento mediante

scrollView.setEnabled(false) 

vista ScrollViews annidati all'interno di altri ScrollViews è generalmente una cattiva pratica poiché di solito è più difficile per l'utente navigare, quindi potrebbe essere necessario prendere in considerazione la riprogettazione di tale attività per evitare questo problema.

Se è necessario utilizzare ScrollViews annidati, ho trovato questa classe two-dimensional ScrollView che potrebbe essere di aiuto.

+1

+1 per il bit di cattiva pratica. Ho provato qualcosa del genere una volta, ed è stato così frustrante che ho finito per rifare l'intera interfaccia utente, e si è rivelato molto migliore e adatto alle dita. Non vale lo sforzo per la maggior parte dei casi. – Geobits