PtrFrameLayout与ViewPager的滑动冲突

项目地址

android-Ultra-Pull-To-Refresh

问题描述

如代码中的布局嵌套,首页中在PtrFrameLayout中嵌套ListView,在ListViewItem嵌套ViewPager,也就是这三个控件之间的恩恩怨怨,争宠搞事情,滑动冲突可描述为:

https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh


        


解决方案

试过网上的各种解决方法,都没有见效,难道是我用了假的搜索引擎,闲话不再多说,上代码:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mListView.requestDisallowInterceptTouchEvent(true);
            mPtrLayout.setEnabled(false);
            break;
        case MotionEvent.ACTION_MOVE:
            int moveX = (int) ev.getX();
            int moveY = (int) ev.getY();
            //ViewPager滑动
            if (Math.abs(moveX-mDownX) > Math.abs(moveY-mDownY)) {
                mListView.requestDisallowInterceptTouchEvent(true);
                mPtrLayout.setEnabled(false);
            //ListView滑动
            }else {
                mListView.requestDisallowInterceptTouchEvent(false);
                mPtrLayout.setEnabled(true);
            }
            mDownX = moveX;
            mDownY = moveY;
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            mPtrLayout.setEnabled(true);
            break;
    }
    return super.dispatchTouchEvent(ev);
}

总结

纵然网上有无限的资源,适合自己的才是最好的,要善于思考,发现问题的根本原因,进而找出解决方案~

你可能感兴趣的:(PtrFrameLayout与ViewPager的滑动冲突)