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