解决ScrollView和SwipeRefreshLayout滑动时的冲突

前言

最近在学习的过程中,遇到了一个问题:需要ScrollView滑动显示信息,但同时有需要使用SwipeRefreshLayout实现下拉刷新,这两个控件都会检测用户滑动的动作,由于事件的分派的问题,这个时候就会发生冲突。

解决原理

在ScrollView还没有到达第一条数据顶部的时候,就设置SwipeRefreshLayout为不可操作状态,那么检测SwipeRefreshLayout的滚动分发就不起作用了

解决方案

if (scrollView != null) {
            scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
                @Override
                public void onScrollChanged() {
                    if (swipeRefreshLayout != null) {
                        swipeRefreshLayout.setEnabled(scrollView.getScrollY() == 0);
                    }
                }
            });
        }

你可能感兴趣的:(解决ScrollView和SwipeRefreshLayout滑动时的冲突)