Android 禁用子viewPager在父viewPager内滑动

Android 禁用子viewPager在父viewPager内滑动,android,android-viewpager,touch-event,Android,Android Viewpager,Touch Event,我想禁用父viewpager中的子viewpager的滑动 我当前使用此自定义子viewpager public class CustomViewPager extends ViewPager { public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attr

我想禁用父viewpager中的子viewpager的滑动

我当前使用此自定义子viewpager

public class CustomViewPager extends ViewPager {

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

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

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    // Never allow swiping to switch between pages
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Never allow swiping to switch between pages
    return true;
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {

    return true;
}
}

这将禁用子viewpager的滑动,但父viewpager滑动在该部分被禁用。

您应该从子viewpager中的
onInterceptTouchEvent
onTouchEvent
返回false。从onTouchEvent返回True将告诉父视图已成功处理事件,这不是您想要的

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    // Never allow swiping to switch between pages
    return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Never allow swiping to switch between pages
    return false;
}

要在不影响父事件的情况下禁用ViewPager滚动,请重写CanScrollHorizontal()方法:


但是父viewpager具有scrollview。onInterceptTouchEvent返回true使scrollview不工作在这种情况下,子viewpager的onTouchEvent应返回false。我修改了我的答案
@Override
    public boolean canScrollHorizontally(int direction) {
        //Disable horizontal scrolling
        if (enabled) {
            return super.canScrollHorizontally(direction);
        } else {
            return false;
        }
    }