1. 程式人生 > >解決SwipeRefreshLayout內巢狀ViewPager,造成的滑動衝突

解決SwipeRefreshLayout內巢狀ViewPager,造成的滑動衝突

提出問題:在SwipeRefreshLayout內巢狀ViewPager時,會造成ViewPager滑動時不靈敏或觸發SwipeRefreshLayout的下拉重新整理事件。

解決思路:在ViewPager滑動時禁止SwipeRefreshLayout滑動,ViewPager滑動結束解禁SwipeRefreshLayout滑動。

關鍵程式碼:

viewpager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        mSwipeRefreshLayout.setEnabled(false);
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        mSwipeRefreshLayout.setEnabled(true);
                        break;
                }
                return false;
            }
        });