【问题标题】:Status bar stays visible in immersive mode状态栏在沉浸模式下保持可见
【发布时间】:2026-01-05 00:40:01
【问题描述】:

我正在开发一个用 Haxe 编写的游戏的 Android 版本。它以前可以工作,但现在进入沉浸式模式后状态栏仍然可见。正如您在屏幕截图中看到的,右上角的按钮被阻止,当您尝试触摸它时会显示一个 Android 菜单。这可能与我的手机升级到 Android Pie 有关。

Android screen shot showing status bar blocking ingame buttons

我目前正在使用这个标志:

decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN);

我尝试了很多组合,但都没有成功。状态栏保持可见。在它不可见并且只出现之前,当用户从顶部向下滑动时。这就是我喜欢恢复的行为。

【问题讨论】:

  • 会不会和这个有关?特别是“仅当您调用它的视图可见时才有效”部分:*.com/a/14184046/2631715
  • 我会检查这个,但它已经有一些效果,所以视图似乎是可见的。
  • 仅供参考,看起来相关,虽然 5 岁以上:*.com/questions/24539709/…

标签: android haxe


【解决方案1】:

这是由 Lime 内部问题引起的。除了基本的石灰setSystemUiVisibility 处理之外,石灰使用SDL,它也处理setSystemUiVisibility。但是这里设置为非全屏,添加了一些额外的标志:

window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

如果切换回这些标志,状态栏会按预期消失。我希望这将很快在石灰本身中得到解决。

【讨论】:

    【解决方案2】:

    【讨论】: