2

ViewPager 内のスワイプ領域を制限する必要があります。たとえば、ユーザーが画面の上半分のスペースでスワイプするジェスチャーを行うと、次のフラグメントにスワイプしますが、ユーザーが画面の下半分でジェスチャーを行うと、何もしません。

それを行う方法はありますか?

4

2 に答える 2

6

これはあなたが必要とするものかもしれません:

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

于 2013-05-21T14:00:55.257 に答える