【发布时间】:2022-11-14 18:05:09
【问题描述】:
我想在 jetpack compose 中实现透明状态栏。
我为此集成了 Accompanist 库,但它对状态栏没有透明影响。
implementation "com.google.accompanist:accompanist-systemuicontroller:0.18.0"
// Remember a SystemUiController
val systemUiController = rememberSystemUiController()
val useDarkIcons = !isSystemInDarkTheme()
DisposableEffect(systemUiController, useDarkIcons) {
// Update all of the system bar colors to be transparent, and use
// dark icons if we're in light theme
systemUiController.setStatusBarColor(
color = Color.Transparent,
darkIcons = useDarkIcons
)
// setStatusBarColor() and setNavigationBarColor() also exist
onDispose {}
}
也试过了,但是手势导航有问题
val view = LocalView.current
if (!view.isInEditMode) {
SideEffect {
val window = (view.context as Activity).window
val insets = WindowCompat.getInsetsController(window, view)
window.statusBarColor = Color.Transparent.toArgb() // choose a status bar color
window.navigationBarColor = Color.Transparent.toArgb() // choose a navigation bar color
insets.isAppearanceLightStatusBars = !useDarkTheme
insets.isAppearanceLightNavigationBars = !useDarkTheme
}
}
请为透明状态栏提出更好的解决方案。
【问题讨论】:
-
你申请
WindowCompat.setDecorFitsSystemWindows(window, false)了吗? -
是的,这会对手势导航产生影响,这就是为什么不想采用这种方法的原因。
-
能发个画面吗?
标签: android android-jetpack-compose android-statusbar jetpack-compose-accompanist