Android - 如何在Google地图上设置Google徽标的底部填充

时间:2018-04-06 01:58:53

标签: java android google-maps google-maps-api-3

在iOS中,这很容易。

在Android中,我尝试通过android:paddingBottom=80dp"中的xml以及mapView.setPadding(0,0,0,80)中的编程方式在地图底部添加填充。在这两种情况下,地图都会向上移动,如果它被剪切,并且出现空白区域,实际上只有Google徽标应该向上移动,而地图应该保持全高。

这是我的xml:

<com.google.android.gms.maps.MapView
    android:id="@+id/mapView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

因此,mapView继续全高,但谷歌地图&#39;由于填充,地图向上移动。 Google Maps&#39;是否有办法仅提升Google徽标地图保持不变?

enter image description here

1 个答案:

答案 0 :(得分:4)

MapView只是地图的FrameLayout容器。而是在onMapReady回调中将填充添加到GoogleMap对象。像这样:

@Override
public void onMapReady(GoogleMap map) {
         map.setPadding(0,0,0,80);
}

还要记住这里的填充值以像素为单位,你可以使用这个函数进行转换:

 public static int dpToPx(int dp, Context context) {
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
        return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
 }


public static void setPaddingForGoogleLogo(GoogleMap map, Context context) {
    map.setPadding(LayoutUtils.dpToPx(15, context),
            LayoutUtils.dpToPx(45, context),
            LayoutUtils.dpToPx(0, context),
            LayoutUtils.dpToPx(85, context));
}

上面的值在我的情况下起作用,与你的类似,但可能你需要做一些测试