高仿淘宝商品商品上拉加载SlideDetailsLayout+viewPager事件冲突

时间:2021-01-04 14:45:38

文/yxj
http://blog.csdn.net/sk719887916/article/details/66974959

slidedetailsLayout实现了高仿淘宝、京东商品详情页面的上拉加载图文详情功能。使用扩展ViewGroup实现,对事件冲突已经做了处理,可嵌套ListView、WebView等*使用。
具体效果和源码出处
https://github.com/cnbleu/SlideDetailsLayout

看上去很完美,但是我一个朋友在使用中碰到一个问题:

SlideDetailsLayout配合viewPager使用的时候,滑动冲突了。
viewpager中有三个fragement,里面有listview、scrollview等。

解决方案:

SlideDetailsLayout类中的onInterceptTouchEvent拦截方法中有一个判断高仿淘宝商品商品上拉加载SlideDetailsLayout+viewPager事件冲突
这个方法是判断viewGroup里面的childView是否可以滑动,避免抢了子View的事件。
我们看一下canChildScrollVertically方法中都做了什么
高仿淘宝商品商品上拉加载SlideDetailsLayout+viewPager事件冲突
看到这里我们明白了,其实就是在判断viewGroup中是否有子View需要滑动,有的话就返回false,让拦截事件继续传递下去。
但是如果是viewpager的话,各个fragement里面的listview并不是直接包含在viewgroup中的,而是在往里面深入一层,于是我做了一下改动就OK了。
高仿淘宝商品商品上拉加载SlideDetailsLayout+viewPager事件冲突
我并没有去遍历viewPager,而是直接getChildAt(0),因为我的布局里面只包含了一层。

到此顺利的帮朋友解决了问题,还顺便赚了一个23块的大红包。