ViewPager嵌套事件冲突问题(dispatchTouchEvent)

在做一个新闻客户端的时候用到了几个ViewPager嵌套,这时候在滑动的时候出现了父类ViewPager拦截了子ViewPager的情况,解决方法如下:

自定义一个ViewPager继承ViewPager,重写它的dispatchTouchEvent方法,代码:

public class HorizontalViewPage extends ViewPager {
    public HorizontalViewPage(Context context) {
        super(context);
    }

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

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        getParent().requestDisallowInterceptTouchEvent(true);

        return super.dispatchTouchEvent(ev);
    }
}

dispatchTouchEvent方法中使用requestDisallowInterceptTouchevent(true) 设为true 时,父类不再拦截子类的事件
注意:自定义的这个ViewPager作为子类view使用,再调用requestDisallowInterceptTouchEvent时注意要用getParent();

posted @ 2015-12-28 14:16  Z漫步  阅读(314)  评论(0编辑  收藏  举报