View的滑动冲突
常见的滑动冲突场景
场景1——外部滑动和内部滑动方向不一致场景2——外部滑动和内部滑动方向一致场景3——上面两种情况的嵌套
场景1:主要是ViewPager、Fragment和Listiew
ViewPager和Fragment:实现左右滑动 ListView:每个页面的上下滑动 本来这种情况是有滑动冲突的,但是ViewPager内部处理了滑动冲突
场景2:当内外两层在同一个方向滑动的时候,系统无法知道用户想让那一层滑动
场景3:上面两种情况的嵌套
滑动冲突的解决方式
外部拦截法:点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,如果不需要就不拦截,这样就可以解决滑动冲突的问题。 外部拦截法需要重写父容器的onInterceptTouchEvent方法
内部拦截法:是指父容器不拦截任何事件,所有事件都传递给子元素,如果子元素需要此事件就直接消耗掉,否则就交给父容器处理,这种方法和Android中的事件分发机制不一致,需要配合requestDisallowInterceptTouchEvent方法才能正常工作。
来实现一个类似ViewPager中嵌套ListView的效果,写一个类似ViewPager的控件
转载请注明原文地址: https://ju.6miu.com/read-285.html