解决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);
                    }
                }
            });
        }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容