我目前很难在全屏模式下显示TYPE_SYSTEM_ALERT窗口。我想这样做是为了在状态栏上有一个从服务创建的叠加视图,但不隐藏它。
但是,将FLAG_FULLSCREEN标志放在我正在创建的窗口的布局参数中似乎不起作用。我找到了STATUS_BAR和EXPAND_STATUS_BAR权限,但我找不到如何使用它们。
以下是LayoutParams:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
mWindowManager.addView(mOverlayView, params);
有什么想法吗?
谢谢
答案 0 :(得分:18)
我在尝试做其他事情时找到了解决方案!
为了在每个其他窗口的顶部设置TYPE_SYSTEM_ALERT窗口并在状态栏的顶部,您必须添加FLAG_LAYOUT_IN_SCREEN标志而不是FLAG_LAYOUT_FULLSCREEN标志:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(mOverlayView, params);
答案 1 :(得分:4)
它在冰淇淋三明治中不起作用了。状态栏包含TYPE_SYSTEM_ALERT
窗口。但是TYPE_SYSTEM_OVERLAY
仍然有效。