Ara*_*ani 4 android-jetpack-compose
我想隐藏状态栏,并且我已经成功地使用伴奏库做到了这一点:
val systemUiController = rememberSystemUiController()
systemUiController.isStatusBarVisible = false
Run Code Online (Sandbox Code Playgroud)
问题是,当应用程序进入后台并进入前台时,这段代码不会运行,因此状态栏会再次显示。我该如何解决这个问题?
谢谢。
您可以使用OnLifecycleEvent此答案。
val systemUiController = rememberSystemUiController()
OnLifecycleEvent { _, event ->
when (event) {
Lifecycle.Event.ON_RESUME,
Lifecycle.Event.ON_START,
-> {
systemUiController.isStatusBarVisible = false
}
else -> Unit
}
}
Run Code Online (Sandbox Code Playgroud)
OnLifecycleEvent:
@Composable
fun OnLifecycleEvent(onEvent: (owner: LifecycleOwner, event: Lifecycle.Event) -> Unit) {
val eventHandler = rememberUpdatedState(onEvent)
val lifecycleOwner = rememberUpdatedState(LocalLifecycleOwner.current)
DisposableEffect(lifecycleOwner.value) {
val lifecycle = lifecycleOwner.value.lifecycle
val observer = LifecycleEventObserver { owner, event ->
eventHandler.value(owner, event)
}
lifecycle.addObserver(observer)
onDispose {
lifecycle.removeObserver(observer)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4361 次 |
| 最近记录: |