Не следует помещать ListView
внутри ScrollView
, потому что класс ListView
реализует собственную прокрутку и просто не получает жесты, потому что все они обрабатываются родительским ScrollView
. Я настоятельно рекомендую вам как-то упростить ваш макет. Например, вы можете добавить представления, которые вы хотите прокрутить, к ListView
в качестве верхних или нижних колонтитулов.
UPDATE
Начиная с API уровня 21 (Lollipop), вложенные контейнеры прокрутки официально поддерживаются Android SDK. В классах View
и ViewGroup
есть несколько методов, которые предоставляют эту функциональность. Чтобы заставить вложенную прокрутку работать на Lollipop, необходимо включить ее для дочернего представления с прокруткой, добавив android:nestedScrollingEnabled="true"
к его объявлению XML или явно вызвав setNestedScrollingEnabled(true)
.
Если вы хотите, чтобы вложенная прокрутка работала на устройствах, предшествующих Lollipop, что вы, вероятно, делаете, вы должны использовать соответствующие служебные классы из библиотеки поддержки. Сначала вам нужно заменить ScrollView
на NestedScrollView . Последний реализует как NestedScrollingParent , так и NestedScrollingChild , поэтому его можно использовать в качестве родительского или дочернего контейнера прокрутки.
Но ListView
не поддерживает вложенную прокрутку, поэтому вам нужно разделить ее на подклассы и реализовать NestedScrollingChild
. К счастью, библиотека поддержки предоставляет класс NestedScrollingChildHelper , поэтому вам просто нужно создать экземпляр этого класса и вызвать его методы из соответствующих методов вашего класса представления.