作者你好,你理解得好像不大正确。
首先,CustomView先于ListView处理拦截事件,所以拦截事件根本轮不到ListView处理,ListView就滑动不了。这个问题可以通过ListView请求父类CustomView不要拦截解决。
其次,LinearLayout想处理点击事件或者滑动事件,那么设置clickable,并且ViewDragHelper.CallBack里通过getViewVerticalDragRange或者getViewHorizontalDragRange设置滑动范围即可。
再次,ViewDragHelper.CallBack的clampViewPositionVertical()这个回调方法是发生了滑动,在processTouchEvent(event)中调用,让用用户决定要不要滑动的回调,已经发生拦截啦。getViewVerticalDragRange或者getViewHorizontalDragRange设置滑动范围,这个方法才是在shouldInterceptTouchEvent(ev)中sign用。