解决思路也很简单,就是在用户点击到地图或者滑动地图时候,让ScrollView不截断点击事件,并传递给子View处理,也就是地图去处理点击事件;当用户手指抬起的时候,将ScrollView的状态恢复至之前的状态,也就是ScrollView可以截断点击事件。
这样处理,点击或者滑动MapView,不会干预到ScrollView的滑动。至此,我们的MapView最好是固定的高度。
mMapView.getChildAt(0).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ //允许ScrollView截断点击事件,ScrollView可滑动 mScrollView.requestDisallowInterceptTouchEvent(false); }else{ //不允许ScrollView截断点击事件,点击事件由子View处理 mScrollView.requestDisallowInterceptTouchEvent(true); } return false; } });