Android SwipeRefreshLayout 、RecyclerView冲突下拉冲突的解决方案
2016-03-02 22:55
387 查看
SwipeRefreshLayout和RecyclerView一起使用的时候,有时出现RecyclerView没有滑动到顶部,手指向下滑动时,触发了SwipeRefreshLayout的刷新事件,造成了冲突。
首先来看一个http://blog.csdn.net/zhangweiwtmdbf/article/details/41206369博客分享的一个解决方法,如下:
这个我试了下,也能解决,但与单个item不会超过屏幕高度的情况下,上面的解决方法是可行的,反之就不行了。
找了好久,又找到了更好的解决办法:
http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout
圆满解决问题。
首先来看一个http://blog.csdn.net/zhangweiwtmdbf/article/details/41206369博客分享的一个解决方法,如下:
mLayoutManager = new LinearLayoutManager(getActivity()); //mPicListView是RecyclerView对象 mPicListView.setLayoutManager(mLayoutManager); mPicListView.setOnScrollListener(new OnScrollListener() { @Override public 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(); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //解决RecyclerView和SwipeRefreshLayout共用存在的bug mRefreshLayout.setEnabled(mLayoutManager .findFirstCompletelyVisibleItemPosition() == 0); } });
这个我试了下,也能解决,但与单个item不会超过屏幕高度的情况下,上面的解决方法是可行的,反之就不行了。
找了好久,又找到了更好的解决办法:
http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener(){ @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop(); swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0); } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } });
圆满解决问题。
相关文章推荐
- android开发中监听器的三种实现方法(OnClickListener)
- Android布局中的layout_weight和weightSum属性的详解及使用
- Android Studio 出现 cannot resolve symbol R 解决方案
- Android学习之dip、dp、sp、pt和px
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
- Android围住神经猫的实现
- Android 中的 Searchable 使用,及删除记录
- Android学习之GridLayout与GridView
- 【Android】AndroidStudio开发遇到的大坑以及填坑方法收集
- 转行自学android,Day10-顺畅
- 设计具有背景图的按钮(ImageButton的焦点及事件处理)
- 解读Google官方SwipeRefreshLayout控件源码,带你揭秘Android下拉刷新的实现原理
- 一个特别适合新手练习的Android小项目——每日一妹纸
- Android自动埋点的一种实现
- android 学习adb的使用
- android多击事件
- Android Camera TakePicture過程分析
- Android主线程、子线程通信(Thread+handler)
- Android软件开发随笔笔记第一讲
- Android Camera数据流分析全程记录(非overlay方式)