Предотвратить подкачку/перелистывание в каскадном ViewPager при обработке прокрутки содержащегося RecyclerView:

У меня есть ViewPager с 3 Fragments содержащимися в нем. Один из Fragments содержит другой ViewPager. что делает его каскадным ViewPager внутри ViewPager.

Мне нужно запретить внутреннему ViewPager пролистывать/перелистывать страницы, но разрешить ему передавать жесты прокрутки содержащемуся RecyclerView.

Да, я хорошо знаю, что ViewPager внутри ViewPager - не лучшая идея, но в этом случае пейджер не должен пролистывать, а передавать жесты дочерним представлениям. Так что не должно быть проблемы с двумя механизмами смахивания в одних и тех же направлениях.

Я попытался использовать следующий код NonSwipeableViewPager для внутреннего пейджера:

public class NonSwipeableViewPager extends ViewPager {

  public NonSwipeableViewPager(Context context) {
        super(context);
    }

    public NonSwipeableViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }
}

И это действительно останавливает ViewPager от перелистывания/перелистывания, но также предотвращает передачу сенсорных событий вниз на RecyclerView.

Как я могу изменить этот ViewPager, чтобы использовать жест прокрутки/листания, но передать жест прокрутки на RecyclerView?


person Emil Adz    schedule 05.07.2016    source источник
comment
Я не буду помогать вам в вашем вопросе, а просто скажу, что ViewPager в ViewPager - плохая идея - попробуйте изменить свой дизайн. (Это та же история, что и создание прокрутки с горизонтальным просмотром внутри)   -  person Mateusz Pryczkowski    schedule 05.07.2016
comment
В большинстве случаев вы правы, но в этом случае, когда я не хочу, чтобы пейджер внутреннего вида можно было заменять, это не должно быть проблемой. так что это в основном контейнер фрагментов, который дает мне красивую анимацию смахивания, когда я нажимаю вкладку, но не меняет страницу, смахивая   -  person Emil Adz    schedule 05.07.2016
comment
Это сработало для меня stackoverflow.com/a/7814054/7118110   -  person Deepak Kumar    schedule 03.12.2019