【问题标题】:Fragment Z-order changes when orientation changes方向改变时片段 Z 顺序改变
【发布时间】:2014-02-01 03:45:56
【问题描述】:

我的主 xml 文件有一个 FrameLayout,在 XML 中定义了一个片段。在运行时,我在此之上添加另一个片段,然后在此之上添加第三个片段。当我添加运行时片段时,我不会给 containerIds 来附加它们。这一切都很好,直到方向改变。方向改变后,第三个片段已在第二个片段下方。但显然我希望 z 顺序保持方向改变之前的状态,即添加的最后一个片段应该在顶部并且可见。

我尝试在添加片段时使用 containerIds,并将它们添加到 XML 中定义的 FrameLayout,但是当我放入 containerIds 时,运行时片段根本不显示。

所以我想知道为什么在运行时添加的片段在我使用 containerId 时不显示。是因为它们被添加到已经包含片段(在 XML 中定义的片段)的容器中吗?我怎样才能解决这个问题?我尝试向 XML 添加额外的容器来保存运行时片段,但这似乎不起作用。让片段显示的唯一方法是从对 FragmentTransaction.add() 的调用中删除 containerId。

另外,是否可以手动更改片段的 z 顺序?我在谷歌上搜索了很多以找到这个问题,但没有找到任何答案。我试过使用 ViewGroup.bringChildToFront() 并使用片段的 getView() 返回的视图,但这没有奏效。我还发现您可以使用 getChildFragmentManager() 在 Android 4.2+ 上嵌套片段,但我支持较旧的 API,而且此方法似乎不在支持库中。

非常感谢任何帮助!

【问题讨论】:

    标签: java android xml android-fragments


    【解决方案1】:

    我解决这个问题的方法是在方向更改后手动重新创建第三个片段,并删除系统创建的那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多