有没有办法在对话框片段前面打开一个导航抽屉

Posted

技术标签:

【中文标题】有没有办法在对话框片段前面打开一个导航抽屉【英文标题】:Is there a way do open a navigation drawer in front of a dialog fragment 【发布时间】:2016-12-01 00:02:46 【问题描述】:

我有一个使用导航抽屉作为菜单的小应用程序。这看起来。我的问题是,当打开一些模态对话框片段时,抽屉也应该可用。

我设法使用 GestureDetector 正确识别滑动手势并将结果转发给主活动。那叫

    drawerLayout.openDrawer 

方法。工作正常,但抽屉出现在对话框的背景中。

有没有简单的方法把抽屉拉到前面?

我是否必须为导航抽屉创建自己的片段并自己处理? 如果是这样,您知道如何轻松存档的任何代码示例 我是否必须以某种方式为对话框片段指定抽屉(如何)?

欢迎所有建议/提示。提前致谢

【问题讨论】:

一般来说,对话框用于要求用户操作/输入才能继续,那么您为什么要绕过这种正常行为呢? 这不是我的决定。该应用程序是从 WinME 设备移植的,前提是它看起来相似。对话框用于流控制,但始终可以选择菜单项来执行独立于主视图当前状态的附加操作。我这样做不是因为我想那样做,而是因为我不得不那样做。 【参考方案1】:

我的结果如下:

我使用的是自己的对话框界面,基本上提供了对话框的标准方法(show/dismiss/...)。 有一种扩展真实对话框的实现(用于不需要菜单的情况) 另一个是扩展一个片段 (NO DialogFragment) 我自己的对话框样式片段创建了一个半透明的布局,覆盖了整个屏幕,消耗了触摸事件。其中有一个相对布局保存对话框的视图/内容(由 setContentView 设置)。该布局使用定义对话框外观的背景可绘制对象。 show/dismiss 方法将从片段管理器中添加/删除它。

所以它是一个普通的片段,包含一个表示对话框的视图。我还检查了几个属性(位置、可以设置为对话框的标志)并尝试将它们应用于显示的视图。

我对这种方法并不完全满意,它肯定有几个缺点,但现在它满足了我的需求。

【讨论】:

以上是关于有没有办法在对话框片段前面打开一个导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章

如何在主片段中单击按钮时打开导航抽屉?

从片段中的按钮单击打开导航抽屉(Kotlin)

第一个片段替换为第二个片段后,如何打开导航抽屉

将一个片段调用到另一个片段时更改标题TextView

有没有办法让对话框自行打开?

如何打开关闭应用程序后打开的最后一个片段并使用导航抽屉和导航组件重新打开它