diff --git a/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt b/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt index 369aa65..60af7de 100644 --- a/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt +++ b/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat @@ -25,6 +26,8 @@ fun AppTheme( darkTheme -> darkColorScheme() else -> lightColorScheme() } + StatusBarColor(colorScheme.background) + NavigationBarColor(colorScheme.background) Box( modifier = Modifier .fillMaxSize() @@ -45,9 +48,12 @@ fun NavigationBarColor(color: Color) { val activity = LocalActivity.current if (!view.isInEditMode) { SideEffect { - activity?.window?.let { - it.navigationBarColor = color.toArgb() - WindowCompat.setDecorFitsSystemWindows(it, false) + activity?.window?.let { window -> + window.navigationBarColor = color.toArgb() + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowCompat.getInsetsController(window, view).apply { + isAppearanceLightNavigationBars = color.luminance() > 0.5f + } } } } @@ -60,9 +66,12 @@ fun StatusBarColor(color: Color) { val activity = LocalActivity.current if (!view.isInEditMode) { SideEffect { - activity?.window?.let { - it.statusBarColor = color.toArgb() - WindowCompat.setDecorFitsSystemWindows(it, false) + activity?.window?.let { window -> + window.statusBarColor = color.toArgb() + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowCompat.getInsetsController(window, view).apply { + isAppearanceLightStatusBars = color.luminance() > 0.5f + } } } }