在DialogActivity中使用时,MapFragment会获得深色叠加

我正在尝试使用@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar主题在Activity显示Android Maps v2 API@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar 。 这很好用。 但是,地图会出现黑暗叠加层:

对话

当我将主题更改为@android:style/Theme.DeviceDefault.Light.NoActionBar ,地图显示为它应该:

正常

这是我的xml布局文件:

      

这里发生了什么?

  • 如何获取标记文本的单击事件
  • TileProvider方法getTile - 需要将x和y转换为lat / long
  • 在“LatLngBounds”构build器上设置最大缩放级别
  • 在地图V2上绘制多色多边形线
  • 单击android map v2后不要捕捉到标记
  • 从Google地图API v2中删除一个圈子,而无需清除地图
  • 在版本2中,地图视图不显示地图
  • 更改Google Maps API v2中的标记大小
  • 我遇到了同样的问题。 经过一番研究,我发现了两个黑客:

    • 在styles.xml中为您的主题添加此参数:
      false

    不好的部分:它删除了活动背后的黑色叠加层。

    • 在地图对象的顶部设置z顺序:
      GoogleMapOptions googleMapsOptions = new GoogleMapOptions();
      googleMapsOptions.zOrderOnTop( true );
      MapFragment mapFragment = MapFragment.newInstance(googleMapsOptions);

    错误部分:地图位于“缩放”控件和“我的位置”按钮上方。

    Personnaly,我选择了第一个解决方案。
    希望这有帮助!

    链接到源

    对于DialogFragment

     getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

    要添加到Audrel的解决方案 ,可以在显示地图时动态地取消对话框窗口的调暗,并在地图消失时将其调暗(例如,当您的对话框有多个页面时,其中一个是地图):

     private float mDimAmount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WindowManager.LayoutParams params = getWindow().getAttributes(); mDimAmount = params.dimAmount; // remember original dim amount ... } private void undim() { WindowManager.LayoutParams params = getWindow().getAttributes(); params.dimAmount = 0.0f; getWindow().setAttributes(params); } private void dim() { WindowManager.LayoutParams params = getWindow().getAttributes(); params.dimAmount = mDimAmount; getWindow().setAttributes(params); } 

    仍然只是另一种解决方法,而不是解决根本原因……

    根据您在对话框中对地图的用途,如果您不需要任何地图控件,则可以使用liteMode ,其中只显示地图的图像以及您加载的任何位置。 它没有这个z层重叠问题。

    您可以将其添加到MapView布局xml:

    map:liteMode="true"

    这对我有用,因为我不希望我的地图无论如何都是互动的。

    您可以在此处阅读Google文档: https : //developers.google.com/maps/documentation/android-api/lite

    只需将此系列添加到您的风格中

      false 

    这是我的风格 :