禁用子 viewPager 在父 viewPager 内滑动
Disable child viewPager swipe inside parent viewPager
我想禁用滑动父 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
中 return 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 滚动,请覆盖 canScrollHorizontally() 方法:
@Override
public boolean canScrollHorizontally(int direction) {
//Disable horizontal scrolling
if (enabled) {
return super.canScrollHorizontally(direction);
} else {
return false;
}
}
我想禁用滑动父 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
中 return 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 滚动,请覆盖 canScrollHorizontally() 方法:
@Override
public boolean canScrollHorizontally(int direction) {
//Disable horizontal scrolling
if (enabled) {
return super.canScrollHorizontally(direction);
} else {
return false;
}
}