我们先看看官方:
https://lbs.amap.com/api/android-sdk/guide/interaction-with-map/control-interaction/
说的很清楚了,不可移除,只支持调整到固定位置。
然而,也并不是没有办法,方法可参考 https://blog.csdn.net/qq_29011851/article/details/78460347
方法1、重写 MapView
public class MyTextureMapView extends TextureMapView {
private Context context;
public MyTextureMapView(Context context) {
super(context);
}
public MyTextureMapView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init(context);
}
public MyTextureMapView(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
init(context);
}
public MyTextureMapView(Context context, AMapOptions aMapOptions) {
super(context, aMapOptions);
init(context);
}
private void init(Context context) {
this.context = context;
// view 加载完成时回调
this.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewGroup child = (ViewGroup) getChildAt(0);//地图框架
// child.getChildAt(0).setVisibility(View.VISIBLE);//地图
child.getChildAt(1).setVisibility(View.GONE);//logo
}
});
}
}
然后重新引用此类,将可以成功隐藏此 logo。
方法2、获得 MapView 后直接监听 Layout
mapView = findViewById(R.id.map);
mapView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
((ViewGroup) mapView.getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
// 此方法必须重写
mapView.onCreate(savedInstanceState);
这样就可以隐藏 logo 了,TextureMapView 和 MapView 隐藏 logo 的方法是一样的。
小技巧:
大家可以通过 ViewGrouop 的 getChildCount() 得到 MapView 子控件的个数,再通过
getChildAt(int index).setVisibility(View.GONE) 逐个调试查看哪个子控件被隐藏了。