其他分享
首页 > 其他分享> > android-使用嵌套的viewpagers将触摸事件委托给父级

android-使用嵌套的viewpagers将触摸事件委托给父级

作者:互联网

我有一个带有嵌套Viewpagers的应用程序.顶级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;
    }
}

但是,仅当内部ViewPager位于其边缘之一上时,才委派touch事件.
因此,如果ViewPager位于左侧,则可以向左滑动父级寻呼机,如果内部寻呼机位于右侧,则可以向右滑动父级寻呼机.在任何其他情况下,触摸事件只是被消耗,不会移动父级事件.

如何实现将触摸事件始终委派给父viewpager?

提前致谢,
麦克法兰

解决方法:

我知道这很旧,但是我找到了解决方案.这比我预期的要简单.

public class NonSwipeableViewPager extends ViewPager {

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

    }

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

} 

标签:android-viewpager,touch,android
来源: https://codeday.me/bug/20191121/2053917.html