Celem jest zaimplementowanie Galerii, której adapter zwraca ListViews (innymi słowy, przewijanie w pionie ListViews osadzone w przewijanej poziomo galerii). To trochę działa po odrobinie pracy, ale przy próbie przewijania w poziomie, ListView wygląda bardzo roztrzęsiony, jak jest trochę lepkości, aby był wyśrodkowany. Nie zaobserwowałem tego rodzaju zachowań w przypadku innego typu widoku osadzonego w galerii.Umieszczenie ListView wewnątrz Galerii
Oto co próbowałem:
Początkowo okazało się, że ListView zgniecione zdarzeń dotykowych, więc słuchacz gest na Galeria nigdy nie zostanie zwolniony.
więc w metodzie onCreate() z działalności, stworzyłem GestureDetector:
galleryGestureDetector = new GestureDetector(this, gallery);
Następnie wewnątrz metody getView() adaptera Gallery, po ListView został nadmuchany i skonfigurowany mam trochę kodu:
listView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
galleryGestureDetector.onTouchEvent(event);
return true;
}
});
w tym przypadku nawet poszedł do skrajnego kroku powrocie prawdziwe od OnTouchListener aby upewnić się, że metoda onTouchEvent() z ListView nie jest w rzeczywistości nazywa. Występuje to samo rozwlekłe zachowanie. W rezultacie, myślę, że mogę wykluczyć konkurencyjne implementacje TouchEvent() między dwoma widokami.
Próbowałem także nadużywać koncepcji TouchDelegate, rozszerzając prostokąt dotykowy Galerii, aby uwzględnić ListView, a następnie zmuszając ListView do delegowania do niego, ale był to także daremny wysiłek.
Chciałbym wyrzucić ręce i powiedzieć, że obecnie nie jest to możliwe, ale aplikacja Social Networking, która pakuje się z DroidXem, jakoś to osiąga!
Może sprawdzić, czy widoki listy nie tworzą/pompują ton po każdym renderowaniu galerii. Spróbuj ich buforować (lub po prostu używając pojedynczego pola statycznego), aby sprawdzić, czy to jest problem. – monkjack
Dobra myśl monkjack, a tak naprawdę wygląda na to, że Galeria przetwarzała listę ViewViews zwróconą przez adapter po wyrejestrowaniu. Próbowałem buforować widoki, tak jak zasugerowałeś i zweryfikowałeś to z 3 elementów, których używam do testowania rozwiązań tego problemu, że tylko 3 widoki są zawsze zawyżone. Niestety, widzę ten sam rezultat ... Po tym, jak slajd ześlizgnie się po niewielkiej ilości, zaczyna drżeć jak szalony. – jkschneider
Jeszcze bardziej tajemniczy - zauważyłem dzisiaj, że jeśli nadal będę próbował przewijać poziomo po tym, jak ListView zacznie drgać, galeria czasami utknie między dwoma widokami. – jkschneider