Форум для тех, кто программирует под Android
Anonymous
Как решить проблему устаревших наборов для statusBarColor и NavigationBarColor в Android API 35+?
Сообщение
Anonymous » 22 ноя 2024, 22:44
У меня есть следующая составная тема:
Код: Выделить всё
@Composable
fun AppTheme(
themeOption: ThemeOption = ThemeOption.SYSTEM,
// Dynamic color is available on Android 12+
dynamicColor: Boolean = true,
content: @Composable () -> Unit,
) {
val isDarkTheme = isAppInDarkTheme(themeOption)
val colorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
val context = LocalContext.current
if (isDarkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
}
isDarkTheme -> darkScheme
else -> lightScheme
}
val view = LocalView.current
if (!view.isInEditMode) {
SideEffect {
(view.context as? Activity)?.window?.apply {
statusBarColor = colorScheme.background.toArgb()
navigationBarColor = colorScheme.surfaceContainer.toArgb()
}?.also {
WindowCompat.getInsetsController(it, view).apply {
isAppearanceLightStatusBars = !isDarkTheme
isAppearanceLightNavigationBars = !isDarkTheme
}
}
}
}
MaterialTheme(
colorScheme = colorScheme,
content = content
)
}
Устарелый фрагмент кода:
Код: Выделить всё
WindowCompat.getInsetsController(it, view).apply {
isAppearanceLightStatusBars = !isDarkTheme
isAppearanceLightNavigationBars = !isDarkTheme
}
Сообщения об устаревании:
Код: Выделить всё
Deprecated
Draw proper background behind WindowInsets.Type.navigationBars() or WindowInsets. Type. tappableElement() instead.
Deprecated
Draw proper background behind WindowInsets.Type.statusBars()} instead.
Я видел, что это связано с API 35. Как я могу это решить?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... r-in-andro
1732304652
Anonymous
У меня есть следующая составная тема: [code]@Composable fun AppTheme( themeOption: ThemeOption = ThemeOption.SYSTEM, // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, content: @Composable () -> Unit, ) { val isDarkTheme = isAppInDarkTheme(themeOption) val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { val context = LocalContext.current if (isDarkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } isDarkTheme -> darkScheme else -> lightScheme } val view = LocalView.current if (!view.isInEditMode) { SideEffect { (view.context as? Activity)?.window?.apply { statusBarColor = colorScheme.background.toArgb() navigationBarColor = colorScheme.surfaceContainer.toArgb() }?.also { WindowCompat.getInsetsController(it, view).apply { isAppearanceLightStatusBars = !isDarkTheme isAppearanceLightNavigationBars = !isDarkTheme } } } } MaterialTheme( colorScheme = colorScheme, content = content ) } [/code] Устарелый фрагмент кода: [code]WindowCompat.getInsetsController(it, view).apply { isAppearanceLightStatusBars = !isDarkTheme isAppearanceLightNavigationBars = !isDarkTheme } [/code] Сообщения об устаревании: [code]Deprecated Draw proper background behind WindowInsets.Type.navigationBars() or WindowInsets. Type. tappableElement() instead. Deprecated Draw proper background behind WindowInsets.Type.statusBars()} instead. [/code] Я видел, что это связано с API 35. Как я могу это решить? Подробнее здесь: [url]https://stackoverflow.com/questions/79213453/how-to-solve-deprecation-sets-for-statusbarcolor-and-navigationbarcolor-in-andro[/url]