如何将一个DialogFragment提升到另一个之上?

时间:2015-07-01 09:41:23

标签: android android-dialogfragment

假设我有几个对话框片段,以响应可以按任何顺序到达的消息和事件。通常,显示的最后一个对话框将位于顶部。 有没有办法在现有的下显示对话框片段,或者在显示它们之后更改它们的z顺序?

我的应用程序一次显示多个对话框应该是非常罕见的,但它可能会发生。只要有一个特定的对话框,它就应该始终位于顶部。

1 个答案:

答案 0 :(得分:4)

对话框创建一个应用程序子窗口。 Android的窗口管理器(WindowManagerService)根据其类型自动计算窗口的z顺序,并将其存储在WindowStatemLayer字段中。内部Android类有时可以访问此字段并更改窗口的z顺序,但此API不会公开给Android SDK。所以似乎影响对话框的z顺序的唯一方法是重新创建它。

我上面写的所有内容都只是对Android源代码进行简要调查的结果,所以我可能错了。也许有一些hacky方法可以使用反射和访问私有字段和方法来执行您想要的操作。但我不确定尝试这样做是个好主意。在我看来,最好只有一个对话框甚至是活动,并在其中管理片段。