内容简介:最近项目首页是ViewPager+Fragment实现左右滑动切换,并且其中有轮播图,目前轮播图是用RecyclerView来实现。本来是一切正常,后来增加一个需求,需要轮播图可以无限滑动。首先就想到在RecyclerView.Adapter#getItemCount()方法返回Integer.MAX_VALUE,然后在稍微修改下List.get(int index)取值逻辑,最后页面打开让RecyclerView滚动到中间来实现。
最近项目首页是ViewPager+Fragment实现左右滑动切换,并且其中有轮播图,目前轮播图是用RecyclerView来实现。
本来是一切正常,后来增加一个需求,需要轮播图可以无限滑动。
首先就想到在RecyclerView.Adapter#getItemCount()方法返回Integer.MAX_VALUE,然后在稍微修改下List.get(int index)取值逻辑,最后页面打开让RecyclerView滚动到中间来实现。
问题
在RecyclerView.Adapter#getItemCount()返回真正的List.size()数量的时候一切正常,RecyclerView 、ViewPager两个相安无事,非常和谐。但是当RecyclerView.Adapter#getItemCount()返回Integer.MAX_VALUE,就会导致RecyclerView左右滑动和ViewPager的左右滑动冲突。
解决
目前测试出两个解决方案:
1. 更改返回值
RecyclerView.Adapter#getItemCount()不要返回Integer.MAX_VALUE,改为返回3000000(这个数值可自行测试得出)或者其他数值。
测试机有限,目前测试返回390W+的时候都可以正常滑动,一旦返回大于等于400W就会开始冲突。
具体原因未知。
这样可以不需要自定义RecyclerView
2. 自定义RecyclerView
public class SlidingConflictRecyclerView extends RecyclerView {
public SlidingConflictRecyclerView(@NonNull Context context) {
super(context);
}
public SlidingConflictRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public SlidingConflictRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
boolean canScrollHorizontally = canScrollHorizontally(-1) || canScrollHorizontally(1);
boolean canScrollVertically = canScrollVertically(-1) || canScrollVertically(1);
if (canScrollHorizontally || canScrollVertically) {
ViewParent parent = getParent();
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
}
return super.dispatchTouchEvent(event);
}
}
复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 处理 WebView 与 ViewPager 滑动冲突
- Android NestedScrolling解决滑动冲突问题(2) - fling问题与NestedScroll++
- MPAndroidChart项目实战(六)——自定义1MPAndroidChart滑动冲突解决(搞不定产品设计师就只能搞自己)
- Hash冲突解决方法
- 依赖冲突时的解决方法
- git 通过 SublimeMerge 处理冲突
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员面试金典(第5版)
[美] Gayle Laakmann McDowell / 李琳骁、漆 犇 / 人民邮电出版社 / 2013-11 / 59.00
本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。第1~7 章主要涉及面试流程解析、面试官的幕后决策及可能提出的问题、面试前的准备工作、对面试结果的处理等内容;第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目......一起来看看 《程序员面试金典(第5版)》 这本书的介绍吧!