View的事件体系(二)

    xiaoxiao2021-03-25  263

    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

    最新回复(0)