Tôi có một RecyclerView
sử dụng một LinearLayoutManager
với HORIZONTAL
định hướng, lồng vào bên trong một FrameLayout
sử dụng BottomSheet
Behavior
.RecyclerView (ngang) lồng trong BottomSheet ngăn chặn dọc di chuyển
Khi cố gắng kéo theo chiều dọc trên RecyclerView
, BottomSheet
không phản hồi sự kiện kéo. Có lẽ điều này là do di chuyển dọc bị tắt cho một LayoutManager
với hướng nằm ngang.
Tôi đã cố gắng ghi đè LinearLayoutManager.canScrollVertically()
và trả về true. Điều này loại hoạt động .. Nếu bạn kéo theo chiều dọc một cách rất cẩn thận, BottomSheet
sẽ phản hồi. Tuy nhiên, ngay khi có bất kỳ chuyển động ngang nào, các điểm dừng BottomSheet
sẽ phản hồi các sự kiện kéo dọc.
Tôi không chắc chắn nếu ghi đè canScrollVertically()
là cách tiếp cận phù hợp tại đây - chắc chắn không cảm thấy đúng từ quan điểm của UX.
Tôi cũng nhận thấy rằng nếu tôi sử dụng ViewPager
thay vì RecyclerView
với chiều ngang theo chiều ngang LayoutManager
, thì BottomSheet
sẽ phản hồi các sự kiện vuốt dọc như mong muốn.
Có phương pháp nào khác là LayoutManager
, RecyclerView
, BottomSheet Behavior
hoặc một thứ khác hoàn toàn có thể giúp truyền bá sự kiện cuộn dọc lên BottomSheet Behavior
?
Có một ví dụ về các vấn đề ở đây:
https://github.com/timusus/bottomsheet-test (Vấn đề có thể được sao chép với cam # f59a7031)
Chỉ cần mở rộng tấm đáy đầu tiên.
Tôi nghi ngờ 'FrameLayout' ngăn sự kiện cuộn từ việc truyền sang 'CoordinatorLayout'. Tôi nghĩ rằng tôi đã gần với giải pháp này tại một số điểm, nhưng đã gặp rắc rối với vấn đề viewport. Cám ơn rất nhiều. –