【问题标题】:Android Google Map API V2 blank screen with nested fragments带有嵌套片段的 Android Google Map API V2 空白屏幕
【发布时间】:2024-01-14 06:13:01
【问题描述】:

我正在开发一款高级集成 Google Maps API V2 的 Android 应用。我正在使用 SupportFragment 并且一切正常,直到我开始将地图放入另一个子片段中 - 片段层次结构很深:

SplitViewFragment->RightChildFragment->ViewPagerFragment->SupportMapFragment

我想为平板实现一种特殊的布局,所以无法删除一个片段级别。

到目前为止,一切都很好 - 在 Android 4.3+ 设备上一切正常,但在较低的 API 级别上,地图片段始终保持空白/透明 - 谷歌徽标和缩放控件可见。没有 logcat 错误。 当我删除一个嵌套片段时,谷歌地图正在同一台设备上工作;所以这不是通常描述的身份验证问题。

我也尝试使用 zOrderOnTop 初始化 MapFragment,但没有成功:

GoogleMapOptions options = new GoogleMapOptions(); options.zOrderOnTop(true); SupportMapFragment mapFragment = SupportMapFragment.newInstance(options);

我花了整整两天的时间试图找到这个问题的答案,并进行了广泛的研究 - 没有成功。

我非常期待您的回答。 谢谢一百万!

【问题讨论】:

    标签: java android android-fragments google-maps-android-api-2 child-fragment


    【解决方案1】:

    我曾经遇到过这个问题。希望此链接对您有所帮助:)

    thanks to jcampbell05

    如果您曾在较旧的 Android 设备上使用过 SupportMapFragment,那么您就会知道当您滚动 ListView、ScrollView 或 ViewPager 时它会留下一个黑框是多么烦人。

    这背后的原因是 Map 使用 SurfaceView,当应用创建此视图时,它会在您的 Activity 后面创建一个窗口并打一个洞,这意味着您的 Activity 窗口中的东西在 SurfaceView 的原始位置下方是看不到的。

    【讨论】:

    • 非常感谢您的快速响应 - 我已经找到了这个自定义的 SuppportMapFragment 实现 - 不幸的是它没有解决问题 - 本示例中的绘图视图是有问题设备上的 TextureView - 代码返回在第 146 行。这太令人困惑了——我很难过,因为那时整个概念都行不通了。
    【解决方案2】:

    难以置信 - 我有一个带有硬件加速的层次结构动画视图 - 我删除了 API 级别

    setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    

    我通过删除硬件加速的停用来修复它。我必须找到另一种能够停用硬件加速的解决方案。

    非常感谢您的帮助。

    【讨论】: