2011-10-26 14 views
12

Mam widżet ViewPager w każdym wierszu listy ListView. Zapewnia to podobny do półki interfejs użytkownika, dzięki czemu użytkownik może przewijać w pionie, szukając półki, a następnie przewijać poziomo wśród zawartości półki. To działa.ViewPager w ListView - jak zablokować oś przewijania?

Ale przewijanie jest okropne: jeśli zacznę przeciągać ViewPager półki, przewijam ją poziomo i przypadkowo przeciągam nieco w górę/w dół, wtedy ListView "zatrzymuje" tę akcję przeciągania i zaczyna przewijać w pionie, kończąc mój horyzontalny opór. W tym stanie akcja przeciągania nie "powróci" do ViewPagera, ListView go ma i to wszystko. Muszę uruchomić kolejną akcję przeciągania, aby ponownie wpłynąć na ViewPager. Sądzę więc, że ListView ma pierwszeństwo w tych przypadkach.

Jak można to naprawić? Chciałbym osiągnąć dokładnie odwrotnie: Jeśli ViewPager w wierszu listy zacznie reagować na poziomą wartość oporu, powinien przechwycić tę akcję, a to przeciągnięcie powinno przestać wpływać na ListView, niezależnie od tego, jak użytkownik porusza swoim palcem pionowo. Czy można to zrobić?

+7

Znaleziono odpowiedź, tutaj: http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling –

+0

W takim przypadku najlepiej jest zamknąć to pytanie jako duplikat (jeśli uważasz, że pytania były wystarczająco bliskie) lub jeśli są wystarczająco różne, prześlij link jako odpowiedź i oznacz go jako "wybraną odpowiedź". W ten sposób nie pojawi się już jako niepotwierdzone pytanie bez odpowiedzi :) –

+0

Masz rację, to pytanie wyświetlane jako nieodebrane jest mylące, dodałem poprawną odpowiedź. Myślę, że to wystarczająco różne, nie oznaczałbym tego jako dokładnego duplikatu. –

Odpowiedz

3

Znalazłem rozwiązanie w wątku this. Problemem jest prawidłowe obsłużenie zdarzeń dotykowych dla HorizontalScrollView w zwykłym ScrollView, ale rozwiązanie tego problemu wydaje się również dotyczyć tego.

Powiązane problemy