ViewPager в ListView - как заблокировать ось прокрутки?

У меня есть виджет ViewPager в каждой строке ListView. Это обеспечивает пользовательский интерфейс, подобный полке, поэтому пользователь может прокручивать вокруг вертикального поиска полки, а затем прокручивать по горизонтали среди содержимого полки. Это работает.

Но опыт прокрутки ужасен: если я начну перетаскивать полку ViewPager, прокручивать ее по горизонтали и случайно перетаскивать вверх/вниз, тогда ListView "ловушки" это действие перетаскивания и начнет прокручивать по вертикали, заканчивая мои горизонтальное сопротивление. В этом состоянии действие перетаскивания не будет "возвращаться" в ViewPager, а ListView имеет его и что он. Я должен начать другое действие перетаскивания, чтобы снова повлиять на ViewPager. Поэтому я предполагаю, что ListView имеет приоритет в этих случаях.

Как это можно зафиксировать? Я хотел бы добиться абсолютно противоположного: если ViewPager внутри строки списка начинает реагировать на горизонтальное перетаскивание, тогда он должен улавливать это действие, и это перетаскивание должно перестать влиять на ListView, независимо от того, как пользователь перемещает свой палец вертикально. Это можно сделать?

Ответ 1

Я нашел решение в этом потоке. Проблема состоит в том, чтобы правильно обрабатывать события касания для HorizontalScrollView внутри обычного ScrollView, но решение этой проблемы также относится к этому.