Android:如何在ViewPager2中拦截触摸事件

当触摸事件来自嵌套视图(例如Horizo​​ntalScrollView等)内部时,如何防止在androidx ViewPager2中滑动?

我希望通过覆盖ViewPager2.onInterceptTouchEvent()来实现这一点,但是由于ViewPager2是final,因此无法将其子类化。

现有解决方案(下面列出)处理的是较旧的ViewPager,可以将其子类化。

根据我尝试过的答案之一的建议:

    private ViewPager2 viewPager2;

    ...
    HorizontalScrollView nestedScrollView = pagerView.findViewById(R.id.scrollview);

    nestedScrollView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v,MotionEvent event) {
            viewPager2.requestDisallowInterceptTouchEvent(true);
            return false;
        }
    });

// nestedScrollView - the HorizontalScrollView inside a ViewPager2 item
// viewPager2 - the ViewPager2 instance

但这似乎没有任何作用。

ViewPager2具有onInterceptTouchEvent()inherited from ViewGroup,但我看不到在最终类中覆盖它的方法。

重新实现整个ViewPager2似乎不是一个明智的解决方案-原始类的长度为1607行,而且它使用的是包未导出的类。

我看过的其他类似问题:

iCMS 回答:Android:如何在ViewPager2中拦截触摸事件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2040595.html

大家都在问