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;
}
}
MyPager
の代わりにレイアウト xml でこのクラスを使用しますViewPager
。