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閱讀 172,809評論 25 708
  • 他穿的很帥,一條文藝范兒的格子圍巾,在脖子里繞一圈,搭下一頭在前襟,學院風及膝的的深藍色呢大衣,深色牛仔褲,再配上...
    Sophie朵兒閱讀 706評論 0 0
  • 這幾天都在用代碼的形式在完成滑動解鎖的功能,今天講到了代理設計模式。而完成一個代理只需要遵循下面的六個步驟。?代理...
    Mustard_Buli閱讀 238評論 0 0
  • James Clear以“如何使自己生活的更好”為主題系統的討論了關于行為心理,習慣養成,以及能力提升的文章,在美...
    地球不在乎耶閱讀 8,891評論 7 67
  • 平安夜的前一夜,教室里空蕩蕩,從前人來人往的走廊安靜的過分。為他們祈禱,明天的考研。最近這幾周準備六級準備考試,一...
    溪上青青閱讀 291評論 0 0