Система аккомпаниатораUiController darkIcons не работает на Android 11
Я использую библиотеку «Аккомпанемент systemUiController» и настраиваю
в то время как в светлой теме, но эффект не применяется на устройствах с Android 11. Кажется, он работает, например, на устройствах с Android 10.
Это код, с помощью которого я пытаюсь установить цвета.
val systemUiController = rememberSystemUiController()
systemUiController.setStatusBarColor(color=statusBarColor,darkIcons=false)
куда
statusBarColor
это более темный цвет, который представляет причину, по которой я хочу белый передний план / значки
В темной теме можно установить
darkIcons
как для
true
а также
false
и эффект применяется соответственно
Это строка состояния в LightTheme с и
Это строка состояния в DarkTheme с
darkIcons=false
Это строка состояния в DarkTheme с
darkIcons=true
Для справки это весь мой
Theme.kt
private val LightBase = ASBTheme(
material = lightColors(
background = FigmaPrimaryWhite,
onBackground = FigmaTextBlack,
surface = FigmaPrimaryWhite,
onSurface = FigmaTextBlack,
primary = FigmaSecondaryAvastBlue,
error = FigmaStatusPink,
),
textColorLabel = FigmaSecondaryAvastPurple,
colorAccent = FigmaPrimaryGreen,
... //bunch of custom colors
)
private val DarkBase = ASBTheme(
material = darkColors(
background = FigmaPrimaryBlackBg,
onBackground = FigmaTextWhite,
surface = FigmaSecondaryAvastBlueDark,
onSurface = FigmaTextWhite,
primary = FigmaSecondaryBlackDark,
error = FigmaStatusPink
),
textColorLabel = FigmaSecondaryAvastPurpleBright,
colorAccent = FigmaStatusGreen,
... //bunch of custom colors
)
private val LocalAsbTheme = staticCompositionLocalOf { LightBase }
var navBarColor: Color? = null
var statusBarColor: Color? = null
@Composable
fun ASBTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) {
DarkBase
} else {
LightBase
}
if (darkTheme) {
navBarColor = DarkBase.background
statusBarColor = DarkBase.primary
} else {
navBarColor = LightBase.background
statusBarColor = LightBase.primary
}
SetBarsTheme(statusBarColor!!, navBarColor!!)
CompositionLocalProvider(
LocalAsbTheme provides colors,
) {
MaterialTheme(
colors = colors.material,
content = content,
)
}
}
val MaterialTheme.asbTheme: ASBTheme
@Composable
@ReadOnlyComposable
get() = LocalAsbTheme.current
SetBarsTheme()
здесь я пытаюсь установить цвета строки состояния в зависимости от события жизненного цикла, чтобы цвета сохранялись после
onPause() / onStop()
. Я также попытался установить цвета вне этой логики, но ошибка все еще сохраняется.
@Composable
fun SetBarsTheme(
statusBarColor: Color,
navigationBarColor: Color,
darkIcons:Boolean=false,
) {
val lifecycleOwner = LocalLifecycleOwner.current
val systemUiController = rememberSystemUiController()
DisposableEffect(lifecycleOwner) {
// Create an observer that triggers our remembered callbacks
// for sending analytics events
val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
systemUiController.setStatusBarColor(color=statusBarColor,darkIcons)
systemUiController.setNavigationBarColor(color=navigationBarColor)
}
}
// Add the observer to the lifecycle
lifecycleOwner.lifecycle.addObserver(observer)
// When the effect leaves the Composition, remove the observer
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
}
1 ответ
Исправлена ошибка . Убедитесь, что вы используете последнюю версию Accompanist.
Если вы все еще можете воспроизвести его, вы должны сообщить об этом , включая используемые версии устройств/зависимостей.