如下代码所示:
其中 scrollView 为外层的大的scrollView 控件。
lv为嵌在ScrollView中的可触摸的listView控件
- // 重写onTouch()事件,在事件里通过requestDisallowInterceptTouchEvent(boolean)方法来设置父类的可用性,true表示父类的滚动不可用, false表示父类可以滚动
- //解决listView的touch事件和scrollView的touch事件冲突问题
lv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub boolean result = false; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = event.getX(); lastY = event.getY(); break; case MotionEvent.ACTION_MOVE: int distanceX = (int) Math.abs(event.getX() - lastX); int distanceY = (int) Math.abs(event.getY() - lastY); if (distanceX > distanceY && distanceX > 10) { sorollView.requestDisallowInterceptTouchEvent(true); } break; case MotionEvent.ACTION_UP: sorollView.requestDisallowInterceptTouchEvent(false); break; default: break; } return result; } });