代码之家  ›  专栏  ›  技术社区  ›  rgoncalv

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

  •  4
  • rgoncalv  · 技术社区  · 6 年前

    在iOS中,这非常简单。

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

    以下是我的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" />
    

    因此,地图视图继续保持全高,但谷歌地图的地图由于填充而向上移动。在谷歌地图的地图保持不变的情况下,有没有办法只向上移动谷歌徽标?

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  12
  •   Andrii Omelchenko    6 年前

    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));
    }
    

    在我的例子中,上面的值起了作用,这与您的类似,但您可能需要进行一些测试