如何在活动顶部显示“窗口/子活动/对话框”,但将焦点保留在活动中

问题描述:

我的活动A是一款游戏,它执行一些后台操作。当我在上下文菜单中按下按钮时,我想弹出出现在活动A之上的“小窗口/对话框/子活动”(让它称为B),并显示有关这些后台操作的一些数据。但我需要将注意力集中在活动A上,以便继续与其交互(玩游戏)。如何在活动顶部显示“窗口/子活动/对话框”,但将焦点保留在活动中

实质上,我希望能够在玩游戏时看到B的数据显示。

我不太确定如何实现这一点。在阅读文档后,我有下面的结论:

  • 我知道我不能使用对话框,因为有焦点。可以避免这种情况吗?
  • 使用带有对话主题的子活动,这是另一个看起来很诱人的选择......但我相信子活动有重点。同上。
  • 我最后的选择是尝试添加LinearLayout和我的数据到主布局,“共享/拆分”屏幕。这并不漂亮,但至少我知道这是可能的。我不喜欢这种方法是我使用屏幕的宽度和高度。

有什么建议?解决方案?

PS:我在这里找到了一些这个线程是非常相关的,以我的问题:

+0

你说的B有多少信息?如果B可以是被动的,为什么不使用吐司? –

+0

我想过了,但是TOAST在X时间后消失了。此外,我想看看我的信息如何实时更改,我不认为你可以用Toast做到这一点。 – sirlion

风格Theme.Dialog创建活动。这是一个正常的活动,看起来像一个对话框,同时是无模式的并接受事件。

附加捕获是在设置WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL和重置WindowManager.LayoutParams.FLAG_DIM_BEHIND

看到这个答案的完整的例子:timed modeless dialog

+0

谢谢!我要去尝试一下。快速问题:你知道在使用这种方法时,主要活动的onPause()方法是否被调用?这也是至关重要的......谢谢! – sirlion

+0

我很确定这里会调用onPause()方法。尽管如此,测试会很容易。祝你好运! – groomsy

为什么不使用的FrameLayout那就是除了你的活动?只要确保此视图具有更高的z索引(确保在XML布局中最后声明它或在运行时创建它)。这样你永远不会离开你的活动。