问题场景:
scrollView 嵌套了listView, 并且该listView配置了侧滑删除的功能,如果不做处理,可能会发生
侧滑动作不流畅,侧滑按钮不能完全滑出,侧滑后的功能键失效等问题
原因分析:
scrollView 的滑动 与 侧滑发生了冲突; 当我们在滑动过程中 x轴 和 y轴 或多或少都会发生变化;
也就是说在侧滑时可能触动了scrollView 的上下滑动(y轴的变动),进而导致两种滑动同时出现,导
致了如上问题的出现
解决方法:
* 判断当前进行的动作是左右滑动还是上下滑动,并对scrollView 和 listView 进行处理
mProductsLv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
mLastX = event.getX();
mLastY = event.getY();
}
if (action == MotionEvent.ACTION_MOVE) {
// 判断当前进行的动作是左右滑动还是上下滑动,并对scrollView进行限定
if (Math.abs(event.getX() - mLastX) > Math.abs(event.getY() - mLastY)) {
mScrollView.requestDisallowInterceptTouchEvent(true);
} else {
mScrollView.requestDisallowInterceptTouchEvent(false);
}
}
if (action == MotionEvent.ACTION_UP) {
mScrollView.requestDisallowInterceptTouchEvent(false);
}
return false;
}
});