我需要限制 ViewPager 内的滑动区域。例如,如果用户在屏幕的上半部分做出滑动手势,它会滑动到下一个片段,但如果用户在屏幕的下半部分做出手势,它什么也不做。
有办法做到这一点吗?
我需要限制 ViewPager 内的滑动区域。例如,如果用户在屏幕的上半部分做出滑动手势,它会滑动到下一个片段,但如果用户在屏幕的下半部分做出手势,它什么也不做。
有办法做到这一点吗?
这可能是您需要的:
public class MyPager extends ViewPager {
public MyPager(Context context) {
super(context);
}
public MyPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(inNeutralArea(ev.getX(),ev.getY())){
//--events re-directed to this ViewPager's onTouch() and to its child views from there--
return false;
}else {
//--events intercepted by this ViewPager's default implementation, where it looks for swipe gestures--
return super.onInterceptTouchEvent(ev);
}
}
private boolean inNeutralArea(float x, float y) {
//--check if x,y inside non reactive area, return true/false accordingly--
return false;
}
}
在布局 xml 中使用此类MyPager
代替ViewPager
.
不要忘记在覆盖onTouchEvent时做同样的事情,否则 ViewPager 仍将在 Android 4.1 及更高版本上滚动。让我措手不及,花了我一段时间才弄清楚。