java - Android - 如何在 Google map 上为 Google Logo 设置底部填充

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

在 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 保持不变?

enter image description here

最佳答案

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/

相关文章:

Android从url解析json并存储

javascript - 带有路线打印的谷歌地图图像

javascript - jQuery 值未按预期从 ipinfo 分配

java - 使用反射和数组参数构造类的 IllegalArgumentException

java - PostgreSQL/Clojure 的驱动程序问题

android - 如何在 ActionBarSherlock 4.0 中设置标题文本的样式?

Android:应用内购买查询不返回任何产品(skuDetails)

javascript - Google Maps JavaScript API 显示灰色空白框而不是 map

java - 将 excel 列中的字符串数据提取到 hashmap 中时出现问题

java - Eclipse 'Anonymous Inner Type' - 自动完成