解决SwipeRefreshLayout与RecyclerView下拉冲突的问题

来源:互联网 发布:淘宝一级类目二级类目 编辑:程序博客网 时间:2024/04/23 19:36

解决SwipeRefreshLayout与RecyclerView下拉冲突的问题

项目结构是这样的,在一个activity中,SwipeRefreshLayout包裹了ViewPager,ViewPager中嵌套了两个Fragment,Fragment中的数据是由一个接口统一返回的,所以需要通过在Activity中请求数据,并交给Fragment去刷新,而其中的Fragment中又嵌套RecyclerView,在RecyclerVier中上滑的时候,直接被SwipeRefreshLayout截获了滑动事件,所以冲突来了。。。
好了啰嗦半天,开始上解决方案吧

主Activity中的代码如下:

    /**     * //解决RecyclerView和SwipeRefreshLayout上滑冲突的问题     * @param enabled     */    public void setOnScroll(boolean enabled) {        refreshLayout.setEnabled(enabled);    }

Fragment中的代码如下:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);            }            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                //解决RecyclerView和SwipeRefreshLayout上滑冲突的问题                super.onScrolled(recyclerView, dx, dy);                int topRowVerticalPosition =                 (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();                activity.setOnScroll(topRowVerticalPosition >= 0);            }        });

然后,我这边就解决了。。。

阅读全文
0 0
原创粉丝点击