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

Posted

技术标签:

【中文标题】Android - 如何在 Google 地图上为 Google 徽标设置底部填充【英文标题】:Android - How to set bottom padding for Google Logo on Google Maps 【发布时间】:2018-09-15 23:14:47 【问题描述】:

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_
    android:layout_
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

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

【问题讨论】:

【参考方案1】:

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

上面的值在我的情况下有效,与你的相似,但可能你需要做一些测试

【讨论】:

以上是关于Android - 如何在 Google 地图上为 Google 徽标设置底部填充的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - Google 地图在真正的 Android 设备上发布 apk 时仍为空白

Android Studio - 真正的 Android 设备上的 Google 地图在发布 apk 时仍为空白

在谷歌地图上为给定地址绘制多边形

如何在 Android 上的 Google 地图上的标记旁边显示标签?

Google Maps Android Studio - 如何禁用地图控件?

如何在 Android Marshmallow 上的 Google 地图上显示当前位置?