方向改变时,片段Z顺序也随之改变



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

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

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

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

非常感谢您的帮助!

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

最新更新