PtrFrameLayout与ViewPager的滑动冲突

项目地址

android-Ultra-Pull-To-Refresh

问题描述

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

https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
<?xml version="1.0" encoding="utf-8"?>
<PtrClassicFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="@null"
            android:fadingEdge="none"
            android:listSelector="@android:color/transparent"
            android:scrollbarStyle="outsideOverlay" />
</PtrClassicFrameLayout>

解决方案

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

@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);
}

总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,752评论 25 709
  • 他穿的很帅,一条文艺范儿的格子围巾,在脖子里绕一圈,搭下一头在前襟,学院风及膝的的深蓝色呢大衣,深色牛仔裤,再配上...
    Sophie朵儿阅读 711评论 0 0
  • 这几天都在用代码的形式在完成滑动解锁的功能,今天讲到了代理设计模式。而完成一个代理只需要遵循下面的六个步骤。代理...
    Mustard_Buli阅读 259评论 0 0
  • James Clear以“如何使自己生活的更好”为主题系统的讨论了关于行为心理,习惯养成,以及能力提升的文章,在美...
    地球不在乎耶阅读 8,929评论 7 67
  • 平安夜的前一夜,教室里空荡荡,从前人来人往的走廊安静的过分。为他们祈祷,明天的考研。最近这几周准备六级准备考试,一...
    溪上青青阅读 294评论 0 0