由于Android默认的状态栏确实不够好看,现在好多主流APP都是使用自定义状态栏,那我们怎么来自定义呢,今天分享两种方式
效果图
第一种:修改系统默认属性
fun initWindow() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //判断SDK的版本是否>=21
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS or WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透名
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or //设置全屏显示
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.TRANSPARENT //设置状态栏为透明
// window.setNavigationBarColor(Color.TRANSPARENT) //设置虚拟键为透明
// window.requestFeature(Window.FEATURE_NO_TITLE) //取消状态栏的标题
}
}
第二种:使用框架,简洁快捷
1.导入依赖包
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
2.代码控制
private fun initWindow() {
ImmersionBar.with(this)//绑定上下文环境;
.statusBarColor(R.color.transparent)//设置状态栏颜色(透明)
.fitsSystemWindows(false)//不被控件覆盖状态栏
.init()//初始化和应用
}