【发布时间】: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