Android列表滑动冲突原因和解决方法
来源:互联网 发布:mac系统怎么远程控制 编辑:程序博客网 时间:2024/05/17 07:10
需求
在纵向可滑动的父列表中加入横向可滑动的子列表
一般适应场景:父列表为纵向滚动RecyclerView、ListView、ScrollView
子列表为:ViewPager、自定义横向ListView、横向滚动RecyclerView、HorizontalScrollView
嵌套位置为header或item当中
原因
这就出现冲突了 因为在操作子列表的时候调用onTouchEvent,父级列表也会调用onTouchEvent;
假设返回值都是false,实际上事件时这么运行的
父OnInterceptTouchEvent-子OnInterceptTouchEvent-子onTouchEvent-父onTouchEvent
所以当我们手势滑动的时候,假设你在子View上横向滑动 如果不是一条水平线的情况下 父列表会滑动导致子列表卡顿或者不能滑动
解决方案
把子View重写dispatchTouchEvent(MotionEventev)方法
粘完源码在最上方加入
getParent().requestDisallowInterceptTouchEvent(true);
其他问题
在有些情况下 调用上面的方法不管用 依旧卡顿,这是因为源码里在判断MotionEvent.ACTION_UP和MotionEvent.ACTION_DOWN时调用了
resetTouchState()
这个方法里调用了getParent().requestDisallowInterceptTouchEvent(false);
所以失效了
所以解决方案为
public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: pager.requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: pager.requestDisallowInterceptTouchEvent(false); break; }}大致是这样
这里提供UltimateRecyclerView嵌套HorizontalListView的Demo
点击打开链接
0 0
- Android列表滑动冲突原因和解决方法
- Android中SwipeRefreshLayout和ViewPager左右滑动冲突的原因以及正确的解决方法
- Android滑动冲突解决方法
- Android滑动冲突解决方法
- Android滑动冲突解决方法
- Android 滑动冲突的解决方法
- slidingmenu和ViewPager滑动冲突的解决方法
- SwipeRefreshLayout和Viewpager滑动时冲突解决方法
- Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式
- Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式
- 复制AItsuki的Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式
- IP冲突的原因和解决方法大全
- activity中滑动手势和listview滑动冲突解决方法
- Android 滑动列表中item里焦点冲突问题
- Android滑动和点击手势冲突解决办法
- Android 左右滑动和点击冲突解决
- Android onClick和滑动事件冲突解决
- Android ScrollView和ListView滑动冲突问题
- mysql导入sql文件
- leetcode -- Gray Code -- 数学题
- PowerDesigner导入sql脚本生成物理模型
- redis 资料
- <LeetCode OJ> (1 / 15 / 16 / 18) NSum问题集合
- Android列表滑动冲突原因和解决方法
- 【凯子哥带你夯实应用层】新手必备的常用代码片段整理(二)
- 关于python的编解码(decode, encode)
- 利用委托自定义事件
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
- MapReduce分析日志---代码流程解读
- Ubuntu搭建Android开发环境
- HDU 1180 诡异的楼梯 BFS
- 关于基类析构函数的问题 http://bbs.csdn.net/topics/390543618