如何显示全屏TYPE_SYSTEM_ALERT窗口?

Too*_*oop 11 android android-layout

我目前很难在全屏模式下显示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);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

Too*_*oop 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);
Run Code Online (Sandbox Code Playgroud)