You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免WindowManager悬浮窗导致全屏应用无法隐藏系统导航栏

解决方案

要解决全屏应用中导航栏无法隐藏的问题,你需要调整悬浮窗的WindowManager.LayoutParams参数,添加以下关键Flag:

  • 添加FLAG_LAYOUT_IN_SCREEN和FLAG_LAYOUT_NO_LIMITS,让悬浮窗适配屏幕整体区域,避免阻止系统导航栏的隐藏逻辑。
  • 可选添加FLAG_NOT_FOCUSABLE,确保悬浮窗不获取焦点,进一步减少对全屏应用UI状态的干扰。

修改后的完整代码如下:

mWindowManager = getSystemService(WINDOW_SERVICE) as WindowManager
val params = WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
        or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 
        or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
        or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT
)

mWindowManager!!.addView(buttonView, params)

各Flag作用说明

  • FLAG_LAYOUT_IN_SCREEN:让悬浮窗布局占据整个屏幕空间,忽略系统UI的占位区域,系统隐藏导航栏时不会受悬浮窗布局范围限制。
  • FLAG_LAYOUT_NO_LIMITS:允许悬浮窗超出屏幕边界,避免强制系统保留导航栏区域来适配悬浮窗。
  • FLAG_NOT_FOCUSABLE:确保悬浮窗不获取输入焦点,避免干扰全屏应用的焦点状态,提升兼容性。

内容的提问来源于stack exchange,提问作者Alan Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:17:10