滑动冲突是一件恶心的事情,那么我们需要干掉他。
滑动冲突说到底是由view嵌套引起的,外层能滑动,内层也能滑动,来了个滑动事件到底听谁的?so让我们来了解解决方案:
要想搞明白滑动冲突的产生原因,需了解Android事件传递机制,在之前的博文里有过介绍,我简单唠叨几句:上级分发给下级,下级处理完上报给上级。
举个栗子:
外层一个view可左右拖动,内层一个View ,也可左右拖动,不设置的时候Android默认都有效,然而这不是我们想要的。so,
1外拦:在外层收到事件的时候,如果事件的发生点在内层veiw的显示区域中,就交由子view进行处理。同时子view处理完了之后也不要上报了,上报了外层view还要接着处理。
2 内拦: 内拦是个比较被动的拦截方法,是受到上层传过来的事件之后直接处理不上报,这样外层view就不用处理了。但万一你的外层view拦截了事件,那内拦就是个摆设。,
只要对事件拦截机制有所了解,就能理解滑动冲突的解决方案。