Цель состоит в том, чтобы реализовать Галерею, адаптер которой возвращает ListViews (другими словами, вертикально прокручиваемые ListViews, встроенные в горизонтально прокручиваемую Gallery). Это вроде работает после небольшой работы, но при попытке горизонтальной прокрутки ListView выглядит очень нервно, как будто есть некоторая липкость к центру. Я не наблюдал такого поведения с любым другим видом, встроенным в Галерею.
Вот что я пробовал:
Изначально я обнаружил, что ListView подавляет события касания, поэтому слушатель жестов в Галерее никогда не срабатывает.
Итак, в методе Activity действия onCreate () я создал GestureDetector:
galleryGestureDetector = new GestureDetector(this, gallery);
Затем, внутри метода getView () адаптера Gallery, после того, как ListView был раздут и настроен, у меня есть такой код:
listView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
galleryGestureDetector.onTouchEvent(event);
return true;
}
});
В этом случае я даже пошел на крайний шаг по возвращению true из OnTouchListener, чтобы гарантировать, что метод onTouchEvent () listView никогда не вызывается. Такое же нервное поведение происходит. В результате я думаю, что могу исключить конкурирующие реализации onTouchEvent () между двумя представлениями.
Я также пытался злоупотребить концепцией TouchDelegate, расширив сенсорный прямоугольник галереи, включив в нее ListView, а затем заставив ListView делегировать ему, но это тоже было тщетным усилием.
Я бы поднял руки и сказал, что в настоящее время это невозможно, но приложение Social Networking, которое поставляется вместе с DroidX, каким-то образом это делает!