Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
2016-12-05 14:15
911 查看
当我们使用ListView嵌套ViewPager时,会出现滑动事件的冲突,我们都知道,Viewpager自己也有滑动的功能,ListView也有滑动的功能,当我们手指放在ViewPager上来达到滑动ListView的目的时,就会发现,这种冲突问题出现了,因为我们根本无法滑动ListView,为什么呢,因为ViewPager是放在ListView上面的,所以当我们点击ViewPager时,这个事件就被最上层的ViewPager给拦截了,ListView获取不到这个事件,所以我们就要根据不同的情况来传递给ListView和ViewPager这个触摸事件.
我们需要判断这个滑动事件是传递给ViewPager来执行还是ListView来执行,所以,我们就可以来判断了,这里不得不提到一个方法:getParent().requestDisallowInterceptTouchEvent(boolean disallowIntercept);,这个方法是判断事件是由父view处理还是子view来处理;
我们重写一个类来继承ViewPager,重写public boolean dispatchTouchEvent(MotionEvent ev) 这个方法,这个方法是用来进行事件的分发;在这个方法中来判断手指的动作,我们记录手指放下的位置,当手指移动时,我们判断手指滑动的距离,当在x轴上的滑动距离大于y轴上的滑动距离时,这个时候应该滑动事件就应该传递给ViewPager来处理,这个时候调用:getParent().requestDisallowInterceptTouchEvent(boolean disallowIntercept);这个方法,参数设置为true,这就是ViewPager自行处理滑动事件,而不是传递给ListView来处理滑动事件,当在y轴上的滑动距离大于x轴上的滑动距离时,这个时候,再次调用getParent().requestDisallowInterceptTouchEvent(boolean disallowIntercept);这个时候我们把参数设置为false,这样滑动事件就由ListView来处理,而不是传递给ViewPager处理.
2.解决方法
相关文章推荐
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- Android scrollview嵌套listview 滑动事件冲突的解决方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- 【Android】完美解决SwipeRefreshLayout中嵌套ViewPager时滑动冲突的方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android Listview嵌套viewpager 滑动冲突解决
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
- 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)
- 解决ListView+ViewPager滑动事件冲突的问题
- Android listview嵌套viewpager滑动冲突问题
- Android ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题解决方案
- 备忘-Android ViewPager 与Gallery滑动冲突解决方法
- 解决ListView+ViewPager滑动事件冲突的问题
- 防止viewpager和子view滑动冲突(ScrollView嵌套webview,Listview嵌套Listview 滑动事件冲突)
- Android listview viewpager解决冲突 滑动
- Android view 滑动事件冲突解决方法(理论篇)
- ViewPager嵌套ViewPager不能响应滑动事件解决方法
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法