Android 禁用子viewPager在父viewPager内滑动
我想禁用父viewpager中的子viewpager的滑动 我当前使用此自定义子viewpagerAndroid 禁用子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
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;
}
}