有限的滑动区域Android

时间:2013-05-21 13:33:16

标签: android

我需要限制ViewPager中的滑动区域。例如,如果用户将手势滑动到屏幕的上半部分空间,则会滑动到下一个片段,但如果用户在屏幕的下半部分进行手势,则无效。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分: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;
    }

}

在布局xml中使用此MyPager类代替ViewPager

答案 1 :(得分:0)

不要忘记重写 onTouchEvent ,否则ViewPager仍会在Android 4.1及更高版本上滚动。抓住了我的保护,并花了一些时间才弄明白。