使用嵌套的viewpagers将触摸事件委派给父级

时间:2014-05-19 13:21:16

标签: android touch android-viewpager

我有一个带嵌套viewpage的应用。顶级viewpager是选项卡布局的ViewGroup,子寻呼机只刷一些图像。

我想要实现的是内部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;
    }
}

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

如何将触摸事件始终委托给父视图提交者?

提前致谢, 麦克法兰

1 个答案:

答案 0 :(得分:3)

我知道这是旧的,但我找到了解决方案。这比我想象的要简单。

public class NonSwipeableViewPager extends ViewPager {

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

    }

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

}