有时候app需要隐藏掉状态栏,让app全屏显示,在API 30以前写法都是使用的下方这种,网上也大多是这种:
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
但在API 30以后,这个写法用 WindowInsetsController 接口的 hide 方法替代了,具体如下:
window.insetsController?.hide(WindowInsets.Type.statusBars())
在上方使用的是kotlin写法,如果是java可以用下方写法:
getWindow().getInsetsController().hide(WindowInsets.Type.statusBars());
兼容API 30以前的写法:
with(window) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
insetsController?.hide(WindowInsets.Type.statusBars())
else
setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
}