使用嵌套视图分页器将触摸事件委托给父级

McF*_*ane 3 android touch android-viewpager

我有一个带有嵌套视图页面的应用程序。顶级视图分页器是选项卡布局的 ViewGroup,子分页器仅滑动一些图像。

我想要实现的是内部 ViewPager 确实将触摸事件完全委托给父 ViewPager。我只想用按钮滚动它的内容。

为此,我为内部 ViewPagers 创建了一个子类:


public class NonTouchViewPager extends ViewPager {

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

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

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但如果内部 ViewPager 位于其边缘之一,它只会委托触摸事件。因此,如果 ViewPager 在左侧,我可以将父寻呼机向左滑动,如果内部寻呼机在右侧,我可以将父寻呼机向右滑动。在任何其他情况下,触摸事件仅被消耗并且不会移动父级。

如何才能实现触摸事件始终委托给父视图分页器?

提前致谢,麦克法兰

Sre*_*ree 5

我知道这已经过时了,但我找到了解决方案。这比我想象的要简单得多。

public class NonSwipeableViewPager extends ViewPager {

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

    }

    @Override
    public boolean canScrollHorizontally(int direction) {
        return false;
    }

} 
Run Code Online (Sandbox Code Playgroud)