WindowInsetsController是android官方在api30之后提供,用于控制window的控制类,实现window控件的简单化
要使用WindowInsetsController,需要先将core版本提高到1.5.0以上,1.5之后可以向低版本兼容
implementation 'androidx.core:core:1.5.0-alpha05'
实例化WindowInsetsController:
val controller = ViewCompat.getWindowInsetsController(view)
控制状态栏
显示状态栏:
controller?.show(WindowInsetsCompat.Type.statusBars())
隐藏状态栏:
controller?.hide(WindowInsetsCompat.Type.statusBars())
状态栏文字颜色改为黑色:
controller?.isAppearanceLightStatusBars = true
状态栏文字颜色改为白色:
controller?.isAppearanceLightStatusBars = false
控制导航栏
显示
controller?.show(WindowInsetsCompat.Type.navigationBars())
隐藏
controller?.hide(WindowInsetsCompat.Type.navigationBars())
//导航栏隐藏时手势操作
controller?.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
//systemBarsBehavior有三个值:
BEHAVIOR_SHOW_BARS_BY_SWIPE
BEHAVIOR_SHOW_BARS_BY_TOUCH
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
目前可能跟部分手机手势有冲突
控件键盘
(需要界面有EditText并且EditText获取到焦点才能起作用)
显示键盘
controller?.show(WindowInsetsCompat.Type.ime())
隐藏键盘
controller?.hide(WindowInsetsCompat.Type.ime())
操作所有系统栏
全屏显示:
controller?.hide(WindowInsetsCompat.Type.systemBars())
显示其他系统栏:
controller?.show(WindowInsetsCompat.Type.systemBars())