在 iOS 中,这非常简单。
虽然在 Android 中,我尝试通过 xml 将填充添加到 map 底部,如 android:paddingBottom=80dp"
以及以编程方式如 mapView.setPadding( 0,0,0,80)
。在这两种情况下, map 都会向上移动,如果它被剪切,则会出现一个空白区域,实际上只有 Google Logo 应该向上移动,而 map 应该保持不变全高。
这是我的 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 继续保持完整高度,但 Google map 的 map 由于填充而向上移动。有没有办法只向上移动 Google Logo ,而 Google map 的 map 保持不变?
最佳答案
MapView 只是 map 的 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));
}
上面的值适用于我的情况,这与您的情况相似,但您可能需要做一些测试
关于java - Android - 如何在 Google map 上为 Google Logo 设置底部填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49684094/