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

安卓设置应用全屏显示操作后仍未生效该如何解决?

安卓应用全屏显示未生效的原因及解决方案

问题原因

你当前使用的是安卓低版本的全屏实现方案,存在明显的兼容性缺陷,无法达到预期效果的核心原因如下:

  • WindowManager.LayoutParams.FLAG_FULLSCREEN 在Android 11(API 30)及以上版本已被官方废弃,无法适配新系统的全屏逻辑
  • 仅配置windowFullscreen属性只会隐藏状态栏,不会自动隐藏系统导航栏,也无法适配刘海/挖孔屏的延伸显示需求
  • 部分厂商定制ROM对系统栏逻辑做了自定义修改,旧方案无法覆盖适配

解决方案

方案1:全版本兼容代码实现

在Activity的onCreate方法setContentView之前调用如下代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    getWindow().setDecorFitsSystemWindows(false);
    WindowInsetsController controller = getWindow().getInsetsController();
    if (controller != null) {
        // 隐藏状态栏
        controller.hide(WindowInsets.Type.statusBars());
        // 隐藏导航栏
        controller.hide(WindowInsets.Type.navigationBars());
        // 配置临时呼出系统栏的行为
        controller.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
    }
} else {
    // 兼容Android 11以下版本
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}

如果需要避免用户临时呼出系统栏后无法自动隐藏,可以将上述逻辑同时在onResume方法中再调用一次。

方案2:补充主题配置

在你现有的主题样式中新增刘海屏适配属性,避免刘海/挖孔区域留白:

<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

该属性可以让应用内容延伸到刘海/挖孔屏区域,实现真正的全屏覆盖效果。

内容的提问来源于stack exchange,提问作者yamete senpai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:03