概述
父Scrollview中放置了一个RockerView,在RockerView中上下滑动时触发scrollview的滑动,导致了RockerView不能正常使用。
解决
原因是因为事件分发时被父容器view给消费了。所以导致子View没有获取到触摸事件,所以也就没有响应了。
详见:Android事件分发机制深度分析(一)
解决办法有很多,可以复写一个scrollview,在其中特别处理事件分发,或者使用下面的方法,比较简单省事:
mChildView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
mParentScrollview.requestDisallowInterceptTouchEvent(false);
} else {
mParentScrollview.requestDisallowInterceptTouchEvent(true);
}
return false;
}
});