Android 显示、隐藏状态栏和导航栏

控制状态栏显示,Activity的主题中配置全屏属性

复制代码
<item name="android:windowFullscreen">true</item>

控制状态栏显示,在setContentView之前设置全屏的flag

复制代码

复制代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

控制状态栏显示,在任何位置通过添加和移除全屏的flag

复制代码
// 隐藏状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 显示状态栏 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

控制状态栏和导航栏显示,setSystemUiVisibility

复制代码
View.SYSTEM_UI_FLAG_LAYOUT_STABLE:全屏显示时保证尺寸不变。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,状态栏显示在Activity页面上面。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏导航栏
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
View.SYSTEM_UI_FLAG_VISIBLE:Activity非全屏显示,显示状态栏和导航栏。
View.INVISIBLE:Activity伸展全屏显示,隐藏状态栏。
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:必须配合View.SYSTEM_UI_FLAG_FULLSCREEN和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION组合使用,达到的效果是拉出状态栏和导航栏后显示一会儿消失。

// 全屏展示
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。
        activity.getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    } else {
        // 全屏显示,隐藏状态栏
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    }
}

// 非全屏显示,显示状态栏和导航栏
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);

作者:YuanchaoLi

链接:https://juejin.cn/post/6844903807046909966

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

好像不咋管用 推荐看下下面这个

Android 9.0 适配------刘海屏 - 简书

相关推荐
方白羽10 小时前
Android Gradle 缓存与文件目录深度解析
android·gradle·android studio
ClouGence14 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
曲幽14 小时前
Termux里的二进制和脚本,到底怎么运行才不踩坑?Termux-service 保活妙招!
android·termux·nohup·services·wake-lock
plainGeekDev15 小时前
单例模式 → object 声明
android·java·kotlin
程序员陆业聪15 小时前
读者点单·03|Compose 与传统 View 混用的 12 个真实坑
android
程序员陆业聪15 小时前
读者点单·02|Android 启动优化实战:Trace 抓取→Application 编排→冷启动全流程拆解
android
Coffeeee16 小时前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent
飞将16 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
恋猫de小郭17 小时前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
黄林晴17 小时前
告别无效重建:Gradle 9.6.0 解决 CI 构建缓存失效痛点告别无效重建:Gradle 9.6.0 解决 CI 建筑缓存失效痛点
android·gradle