相关疑难解决方法(0)

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

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

我希望通过覆盖可以实现这一点,ViewPager2.onInterceptTouchEvent()但是由于 ViewPager2final不能被子类化。

现有的解决方案(见下表)处理与旧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
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何效果。

ViewPager2 具有从 ViewGroup 继承的onInterceptTouchEvent()但我没有看到在最终类上覆盖它的方法。

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

我看过的其他类似问题:

android ontouchlistener swipe-gesture android-viewpager2

10
推荐指数
0
解决办法
1752
查看次数

在ViewPager中设计Horizo​​ntalScrollView或使用片段:

我需要设计以下屏幕,我需要你的建议:

在此输入图像描述

说明:

标题是静态/固定的,我不需要对它做任何事情.

黄色:这是有趣的部分,我需要设计一个ViewPager类似的屏幕,能够向左/右滚动最多4个屏幕.

红色:在每个屏幕中,我需要添加一个可滚动的表格/网格,如果它不适合屏幕大小.

绿色:可以使用屏幕底部的绿色按钮或通过滚动来完成页面切换ViewPager.

问题是:这种行为可以使用ViewPager或者我应该使用Fragments吗?如果Fragment是要走的路,那么我将如何使用滑动手势实现页面切换?如果它是一个ViewPager然后如何添加内部滚动以及如何使用底部的按钮控制它?

任何帮助将不胜感激,谢谢.

android android-layout android-fragments android-viewpager

8
推荐指数
1
解决办法
8518
查看次数