ScrollView 内嵌百度地图问题解决
在ScrollView上内嵌百度地图遇到两个问题
- 事件冲突,移动地图的时候屏幕滚动了
- 移动ScrollView的时候,百度地图出现黑边
问题1的处理就有各种办法了,核心都是拦截事件,我使用的办法是加一个容器,当用户的事件范围是在容器内时,让scrollview不接收事件处理即可。
public class MapScrollContainerView extends FrameLayout {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
getParent().requestDisallowInterceptTouchEvent(true);
} else if (ev.getAction() == MotionEvent.ACTION_UP) { getParent().requestDisallowInterceptTouchEvent(false);
}
return super.dispatchTouchEvent(ev);
}
public MapScrollContainerView(Context context) {
super(context);
}
public MapScrollContainerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MapScrollContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
问题2的处理,在百度的更新文档上有
2015年10月20日 百度地图Android SDK v3.6.0发布
9、新增TextureMapView,实现地图由TextureView渲染,解决原MapView基于系统GLSurfaceView导致在TabHost和scrollView中等闪黑屏、白边、压盖等问题(android 4.0以上系统,并开启强制GPU渲染)
将MapView改为TextureMapView,或者将SupportMapFragment改为TextureSupportMapFragment即可。