SwipeRefreshLayout和RecyclerView一起使用的时候,有时出现RecyclerView没有滑动到顶部,手指向下滑动时,触发了SwipeRefreshLayout的刷新事件,造成了冲突。

首先来看一个http://blog.csdn.net/zhangweiwtmdbf/article/details/41206369博客分享的一个解决方法,如下:

mLayoutManager = new LinearLayoutManager(getActivity());//mPicListView是RecyclerView对象mPicListView.setLayoutManager(mLayoutManager);mPicListView.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView,int newState) {super.onScrollStateChanged(recyclerView, newState);//加载更多if (!isLoading&& hasMore&& mAdapter.getItemCount() == (mLayoutManager.findLastVisibleItemPosition() + 1)&& newState == RecyclerView.SCROLL_STATE_IDLE) {isLoading = true;requestServerArticleMore();}}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);//解决RecyclerView和SwipeRefreshLayout共用存在的bugmRefreshLayout.setEnabled(mLayoutManager.findFirstCompletelyVisibleItemPosition() == 0);}});

这个我试了下,也能解决,但与单个item不会超过屏幕高度的情况下,上面的解决方法是可行的,反之就不行了。

找了好久,又找到了更好的解决办法:

http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener(){@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {int topRowVerticalPosition =(recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0);}@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);}});

圆满解决问题。

Android SwipeRefreshLayout 、RecyclerView冲突下拉冲突的解决方案相关推荐

  1. Android SwipeRefreshLayout GMail的下拉刷新效果

    新浪微博:@_阡陌花开 Android 讨论群:92058507 今天更新了一下手机App,随手点开GMail客户端,发现它的下拉刷新效果很炫: 还打算研究研究如何实现呢,不过先去百度了一下,发现这个 ...

  2. android google 下拉刷新 csdn,android SwipeRefreshLayout google官方下拉刷新控件

    下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...

  3. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  4. android 设置下拉刷新,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  5. android 官方上拉,手把手教你实现RecyclerView的下拉刷新和上拉加载更多

    纵观多数App,下拉刷新和上拉加载更多是很常见的功能,但是谷歌官方只有一个SwipeRefreshLayout用来下拉刷新,上拉加载更多还要自己做. 基于RecyclerView简单封装了这两个操作, ...

  6. 采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout的引入

    之前都是采用PullToRefresh进行下拉刷新和下拉加载,现在采用谷歌自己的控件SwipeFreshLayout,配合Recyclerview来实现这一效果.使用SwipeRefreshLayou ...

  7. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧

    我们开发项目的时候,经常会看到禁止的情况,而Android开发中并没有直接调用的接口,下面是爱站技术频道小编就给大家介绍的Android开发中禁止下拉式的实现技巧,希望网友们喜欢! 分享给大家供大家参 ...

  8. android改变下拉框字体颜色,有没有简单的方法来改变Android中的Spinner下拉颜色?...

    我创建我的主题以与应用程序一起使用,主题的父级是Theme.AppCompat.Light.NoActionBar 顺便说一句,我想要白色背景和黑色文字. 这是适配器代码 val adapter = ...

  9. android二级菜单实现,Android编程实现二级下拉菜单及快速搜索的方法

    本文实例讲述了Android编程实现二级下拉菜单及快速搜索的方法.分享给大家供大家参考,具体如下: 一.我们要做什么? 上面有个搜索框,下面是一个二级下拉菜单. 输入查询内容,下面列表将显示查询结果. ...

最新文章

  1. 注册Github账户过程
  2. 字符串互换后字典序最小
  3. Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
  4. vivo计算机隐藏游戏,vivo
  5. SpringMVC拦截器之介绍和搭建环境
  6. java文件名中不能包含的字符,使用Java 7编写包含非英语字符的文件名时,zip条目不正确...
  7. 【Unity】UGUI无法修改UI元素的Pivot锚点位置
  8. 13.字符串,结构,联合
  9. HDU_1874_畅通工程续_最短路问题
  10. 【字体分享】设计师常用的日系中文字体
  11. ansible模块--setup模块
  12. jeecg boot微服务架构图
  13. oracle 报错904,EXP-00008: 遇到 ORACLE 错误 904
  14. 超时空智慧办公白皮书(2023)
  15. 在aws亚马逊云EC2上创建root用户,并使用root用户登录
  16. OUC_软件工程_BLOG1
  17. 理清gcc、libc、glibc、libc++、libstdc++的关系
  18. QSL语句大全(3)
  19. php 尾递归,又见尾递归
  20. 纽约大学计算机研究生案例,纽约大学计算机专业硕士成功申请案例

热门文章

  1. x265-创建encdata
  2. Google Guava 库用法整理
  3. Maven2 的常用命令
  4. TCP/IP协议学习
  5. git add.后回退 代码丢失
  6. OVERLAPPED结构与GetOverlappedResult函数
  7. 代码库之----图片预览
  8. BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)
  9. dataGridView 行头那一块儿空白是否可见的设置
  10. java 中的对象序列化