Android:SwipeRefreshLayout+RecyclerView冲突解决
16lz
2021-01-23
Android:SwipeRefreshLayout+RecyclerView.onScrollListener冲突解决
提供一个简单的解决方式,首先重写onScrollListener内部的onScrolled方法,即滚动完成后,我们进行判断。
判断RecyclerView可见的item位于第一个的时候,使swipeRefresh获取焦点,不走ScrollListener,当不在第一个不在屏幕内显示的时候,走ScrollListener。
下面放代码
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {public void onScrolled(RecyclerView recyclerView, int dx, int dy) { //判断RecyclerView可见的item位于第一个的时候,使swipeRefresh获取焦点,不走ScrollListener,当不在第一个不在屏幕内显示的时候,走ScrollListener int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop(); //走swipeRefresh swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0); if (topRowVerticalPosition < 0) { //走ScrollListener 写具体内容} } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } }
更多相关文章
- Android屏幕截图实现 (adbd部分)
- Android屏幕信息获取
- android button按键得到焦点和点击后改变背景图片
- Android 4.0: 旋转屏幕时禁止Activity重新加载
- android屏幕适配详解
- 必须知道的Android屏幕自适应解决方案
- Android中如何让手机屏幕不待机
- 最全面Android屏幕适配解决方案
- android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置