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

Kev*_*ede 8 android android-dialogfragment

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

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

Mic*_*ael 6

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

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