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

如何用WindowInsetsController替代已废弃的FLAG_FULLSCREEN实现全屏并兼容低版本API?

如何用WindowInsetsController替代已废弃的FLAG_FULLSCREEN实现全屏并兼容低版本API?

刚好之前我也踩过这个坑,官方把FLAG_FULLSCREEN标为废弃后,确实得换用WindowInsetsController来实现全屏,而且还要兼顾旧版本设备,下面给你一套完整的实现方案,直接就能用~

首先,我们需要根据系统版本做分支处理——Android 11(API 30)及以上用新API,以下版本继续用原来的flag,这样就不会有兼容性问题了。

封装一个通用的全屏工具方法

你可以把这个方法放在工具类里,或者直接在Activity里实现,方便全局调用:

public static void setFullScreen(Activity activity) {
    Window window = activity.getWindow();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        // API 30+ 用WindowInsetsController控制状态栏
        WindowInsetsController insetsController = window.getInsetsController();
        if (insetsController != null) {
            // 隐藏状态栏(如果需要连导航栏一起隐藏,就改成 Type.statusBars() | Type.navigationBars())
            insetsController.hide(WindowInsets.Type.statusBars());
            // 可选配置:让状态栏/导航栏在用户滑动时临时显示,松手后自动隐藏
            insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
        }
    } else {
        // 低版本系统继续使用旧的FLAG_FULLSCREEN
        window.setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN
        );
        // 可选:如果需要让页面内容延伸到状态栏原本的区域,加上这个flag
        // window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }
}

在Activity中调用

比如在MainActivity的onCreate方法里,设置完布局后直接调用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    // 触发全屏
    setFullScreen(this);
}

额外说明

  • 如果你的需求是完全沉浸式全屏(隐藏状态栏+导航栏),在API30+的分支里,把hide的参数改成WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()就行,对应旧版本的FLAG_FULLSCREEN | FLAG_HIDE_NAVIGATION。
  • 那个setSystemBarsBehavior是个很实用的配置,用户滑动屏幕边缘时会临时调出状态栏,操作完又自动隐藏,体验和旧的全屏模式一致。

这样写出来的代码,既遵循了官方的新规范,又能完美兼容所有Android版本,不会有废弃方法的警告,也不会在旧设备上出问题~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:34:31