2

我正在查看一个不同的问题Google Maps Android API v2 - Interactive InfoWindow (就像在原始的 android google maps 中一样),你可以看到他正在使用 requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 使地图 v2 使用全屏。我试过这个,但我的位置按钮部分被我的操作栏覆盖,不像他的。有谁知道如何将它稍微向下移动?

谢谢!

我的看起来像这样

4

2 回答 2

3

不幸的是,您无法控制此按钮。显然,您可以在 android 源代码中搜索此按钮id并从代码中手动更改布局参数,但我绝对不会这样做。

这个按钮非常容易自己实现。所以我建议禁用内置的“定位我”按钮并实现你自己的,它将位于操作栏的正下方。

要禁用它,请使用:

googleMap.setMyLocationEnabled(false);

新按钮onClick方法内容:

googleMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(googleMap.getMyLocation().getLatitude(),
                                                                 googleMap.getMyLocation().getLongitude())));
于 2013-02-22T17:42:42.967 回答
1

您可以通过其 id 获取视图并重新设置上边距显然 id 始终为 2,但这没有记录,并且当/如果 id 发生更改时,您的应用程序将中断。就像 Pavel 所说,制作自己的位置按钮并将其连接起来更安全。

不幸的是,在 onCreate 中调用 ActionBar.getHeight() 将始终返回 0,因为布局尚未完成。获得真实高度的方法是在 ViewTreeObserver 上使用监听器:

mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(
     new ViewTreeObserver.OnGlobalLayoutListener() {
          public void onGlobalLayout() {
               int actionBarHeight = getActionBar().getHeight();
               // TODO: set margin of views dependent on actionbar height
               // remove the listener
               mainLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
          }
     }
}
于 2013-02-22T18:06:41.310 回答