解决android子控件与父控件滑动冲突的问题
2016-04-07 22:25
531 查看
解决android子控件与父控件滑动冲突的问题
开发过程中会遇到可滑动控件互相嵌套导致滑动冲突的问题
考虑到滑动冲突是由于父view的onInterceptTouchEvent(MotionEvent ev)函数调用导致的,可以通过调用父view的requestDisallowInterceptTouchEvent方法达到滑动子view不影响父view滑动的效果
继承自view 的控件都可以重写如下函数:public boolean dispatchTouchEvent (MotionEventev) //此方法分发触发事件
重写子类控件的上诉方法如下:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: getParent().requestDisallowInterceptTouchEvent(false); break; } return super.dispatchTouchEvent(ev); }
这么写的好处是不影响childview的点击事件的触发,相对影响较小。
坏处是这个自定义view的所有触发事件父view都不能再响应,如果只想处理一个方向上的滑动,可以加一条case条件判断滑动方向来,在合适的方向上调用
getParent().requestDisallowInterceptTouchEvent(false);
允许父view处理滑动事件
参考:
Android触摸事件分发机制
ListView与ViewPager的滑动冲突
相关文章推荐
- Android:inputType常用取值
- Android 入门ListView 的基本使用,BaseAdapter的编写
- Android开发:最详细的 Toolbar 开发实践总结
- 【转】Android贪吃蛇源代码
- Running Android Lint错误
- Android QRCodeReaderView 和Camera API冲突
- 如何设置Android的AVD模拟器可以输入中文
- 关于intent.setFlags()的一些故事
- Android-通过Java代码来实现属性动画
- android工具库
- 自己实现android侧滑菜单
- Android开发-layout布局相关属性总结
- Android Studio连接华为mate8手机调试时不显示错误日志的解决办法
- [android] 手机卫士关闭自动更新
- Android编程学习笔记 之 BroadcastReceiver组件
- Android -- Camera2(Android5.0)
- android和iOS的.gitignore模版
- Android应用一般上架流程
- [Android]从视频流读取帧图像保存到本地
- Android自定义View或ViewGroup的流程