PtrFrameLayout與ViewPager的滑動(dòng)沖突

項(xiàng)目地址

android-Ultra-Pull-To-Refresh

問題描述

如代碼中的布局嵌套,首頁中在PtrFrameLayout中嵌套ListView,在ListViewItem嵌套ViewPager,也就是這三個(gè)控件之間的恩恩怨怨,爭(zhēng)寵搞事情,滑動(dòng)沖突可描述為:

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>

解決方案

試過網(wǎng)上的各種解決方法,都沒有見效,難道是我用了假的搜索引擎,閑話不再多說,上代碼:

@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滑動(dòng)
            if (Math.abs(moveX-mDownX) > Math.abs(moveY-mDownY)) {
                mListView.requestDisallowInterceptTouchEvent(true);
                mPtrLayout.setEnabled(false);
            //ListView滑動(dòng)
            }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);
}

總結(jié)

縱然網(wǎng)上有無限的資源,適合自己的才是最好的,要善于思考,發(fā)現(xiàn)問題的根本原因,進(jìn)而找出解決方案~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • 他穿的很帥,一條文藝范兒的格子圍巾,在脖子里繞一圈,搭下一頭在前襟,學(xué)院風(fēng)及膝的的深藍(lán)色呢大衣,深色牛仔褲,再配上...
    Sophie朵兒閱讀 748評(píng)論 0 0
  • 這幾天都在用代碼的形式在完成滑動(dòng)解鎖的功能,今天講到了代理設(shè)計(jì)模式。而完成一個(gè)代理只需要遵循下面的六個(gè)步驟。?代理...
    Mustard_Buli閱讀 287評(píng)論 0 0
  • James Clear以“如何使自己生活的更好”為主題系統(tǒng)的討論了關(guān)于行為心理,習(xí)慣養(yǎng)成,以及能力提升的文章,在美...
    地球不在乎耶閱讀 9,077評(píng)論 7 67
  • 平安夜的前一夜,教室里空蕩蕩,從前人來人往的走廊安靜的過分。為他們祈禱,明天的考研。最近這幾周準(zhǔn)備六級(jí)準(zhǔn)備考試,一...
    溪上青青閱讀 312評(píng)論 0 0

友情鏈接更多精彩內(nèi)容