ViewPager相互嵌套,里层ViewPager无法滑动

来源:互联网 发布:中国钢铁进出口数据 编辑:程序博客网 时间:2024/05/17 22:00

以前在做项目的时候遇到过ViewPager嵌套viewpager的问题,会出现里面的viewPager响应不到它的滑动事件,出列这样问题的原因其实是事件冲突造成的,解决的方法是我们要自定义里面的viewpager,重写它的dispatchTouchEvent方法,然后我们在布局文件里定义里面的viewpager时就不要用v4包里的viewpager了,要用我们自己的viewpager,好了,不多说直接上代码:



//自定义的viewPager

public class MyViewPager extends ViewPager {

    private float x;
    private float y;

    public MyViewPager(Context context) {
        super(context);
    }

    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
// 记录按下时候的坐标  
            x = ev.getX();
            y = ev.getY();
       // 通知其父控件,现在进行的是本控件的操作,不允许拦截  
            getParent().requestDisallowInterceptTouchEvent(true);

            break;
        case MotionEvent.ACTION_UP:

            break;

        case MotionEvent.ACTION_CANCEL:

            float x2 = ev.getX();
            float y2 = ev.getY();

            if(Math.abs(x2-x)>Math.abs(y2-y)){
                getParent().requestDisallowInterceptTouchEvent(true);
            }else{
                getParent().requestDisallowInterceptTouchEvent(false);
            }

            break;

        }

        return super.dispatchTouchEvent(ev);
    }

}

0 0
原创粉丝点击