У меня есть RecyclerView
, использующий LinearLayoutManager
с ориентацией HORIZONTAL
, вложенный в FrameLayout
с использованием BottomSheet
Behavior
.
При попытке вертикального перетаскивания через RecyclerView
BottomSheet
не реагирует на событие перетаскивания. Предположительно, это связано с тем, что вертикальная прокрутка отключена для LayoutManager
с горизонтальной ориентацией.
Я пытался переопределить LinearLayoutManager.canScrollVertically()
и вернуть true. Это вроде работает. Если очень осторожно перетащить вертикально, BottomSheet
отреагирует. Однако, как только происходит какое-либо горизонтальное движение, BottomSheet
перестает реагировать на события вертикального перетаскивания.
Я не уверен, что переопределение canScrollVertically()
является правильным подходом здесь — это определенно не кажется правильным с точки зрения UX.
Я также заметил, что если я использую ViewPager
, а не RecyclerView
с горизонтально ориентированным LayoutManager
, BottomSheet
реагирует на события вертикального смахивания по желанию.
Есть ли какой-то другой метод LayoutManager
, RecyclerView
, BottomSheet Behavior
или что-то еще, что может помочь распространить события вертикальной прокрутки на BottomSheet Behavior
?
Вот пример проблемы:
https://github.com/timusus/bottomsheet-test (проблема может быть воспроизведена с коммитом # ф59а7031)
Просто разверните первый нижний лист.