//写一个类来继承RelativeLayout,它是专门来将MapView包裹起来的
public class MapContainer extends RelativeLayout {
// 定义一个SsrollView 将它与Activity的scrollView绑定;
private ScrollView scrollView;
//三个构造
public MapContainer(Context context) {
this(context,null);
}
public MapContainer(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public MapContainer(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//通过这个方法将它与Activity的ScrollView绑定
public void setScrollView(ScrollView scrollView) {
this.scrollView = scrollView;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
//事件分发
if (ev.getAction() == MotionEvent.ACTION_UP) {
//手指按下阻止ScrollVIew向下发送事件
scrollView.requestDisallowInterceptTouchEvent(false);
} else {
scrollView.requestDisallowInterceptTouchEvent(true);
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
布局就是这样
<com.lq.driver_nine_happy.ui.weight.MapContainer android:id="@+id/map_container" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.amap.api.maps.MapView android:visibility="gone" android:layout_width="match_parent" android:layout_height="@dimen/dp_300" android:id="@+id/mapView" /> </com.lq.driver_nine_happy.ui.weight.MapContainer>
@BindView(R.id.map_container) MapContainer mapContainer;
@BindView(R.id.scroll) ScrollView scroll;
mapContainer.setScrollView(scroll);