Android 笔记 沉浸式状态栏设置及效果说明

本文详细介绍如何在Android应用中实现沉浸式状态栏,包括不同属性组合的效果展示及适用场景,如全屏无状态栏、无虚拟按键等,并提供了解决状态栏与布局重叠问题的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用android原生的方法设置setSystemUiVisibility,以下是设置相应的属性和展示效果,以及适合场景:

 

## 沉浸式状态栏 基于anroid5.0开发适配
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {}

### SYSTEM_UI_FLAG_FULLSCREEN  全屏 无系统状态栏(时间 电量一类的)
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);

### View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE  全屏 无系统状态栏 且无标题(下拉显示)

### View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // 全屏 无系统状态栏(下拉显示) 且无标题,无虚拟按键 --适合游戏

### View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE

    getWindow().setStatusBarColor(Color.TRANSPARENT); // 非全屏 有标题 有系统状态栏 跟主页颜色一致

### getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

                getWindow().setStatusBarColor(Color.TRANSPARENT);

                getSupportActionBar().hide(); // 全屏 沉浸式 无标题 有系统状态栏 跟主页颜色一致

### getSupportActionBar().hide(); 也可在theme中设置 noActionBar主题

使用以上方法可以满足大部分需求,在少数情况下,会发现 状态栏背景 跟状态栏的文字颜色一致或相似,导致状态栏的文字显示效果极差,根本看不出来状态栏,这种情况下,没找到太好的办法解决,所以我选择使用第三方库(immersionbar)的办法。

implementation 'com.gyf.immersionbar:immersionbar:3.0.0'

常用方法:

ImmersionBar.with(this)
       //.barColor(R.color.color_tab_normal) // 设置导航栏背景色
       //.hideBar(BarHide.FLAG_HIDE_BAR)  //隐藏状态栏或导航栏或两者,不写默认不隐藏
       .statusBarDarkFont(true) // 设置导航栏字体为深色
       .fitsSystemWindows(true) // 解决状态栏和布局重叠问题,任选其一,默认为 false,当为 true 时一定要指定 statusBarColor(),不然状态栏为透明色,还有一些重载方法
       .init();

方法二:

解决状态栏跟布局重叠的问题,可以在布局的根节点下添加:

    android:fitsSystemWindows="true"

也可以解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值