diff --git a/app/src/main/java/com/example/woof/ui/theme/Theme.kt b/app/src/main/java/com/example/woof/ui/theme/Theme.kt index 2f5d87a..8aa36b5 100644 --- a/app/src/main/java/com/example/woof/ui/theme/Theme.kt +++ b/app/src/main/java/com/example/woof/ui/theme/Theme.kt @@ -17,6 +17,7 @@ package com.example.woof.ui.theme import android.app.Activity import android.os.Build +import android.view.View import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -25,6 +26,7 @@ import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView @@ -62,7 +64,6 @@ private val LightColors = lightColorScheme( scrim = md_theme_light_scrim, ) - private val DarkColors = darkColorScheme( primary = md_theme_dark_primary, onPrimary = md_theme_dark_onPrimary, @@ -114,9 +115,7 @@ fun WoofTheme( val view = LocalView.current if (!view.isInEditMode) { SideEffect { - val window = (view.context as Activity).window - window.statusBarColor = colorScheme.primary.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + setUpEdgeToEdge(view, darkTheme) } } @@ -127,3 +126,23 @@ fun WoofTheme( content = content ) } + +/** + * Sets up edge-to-edge for the window of this [view]. The system icon colors are set to either + * light or dark depending on whether the [darkTheme] is enabled or not. + */ +private fun setUpEdgeToEdge(view: View, darkTheme: Boolean) { + val window = (view.context as Activity).window + WindowCompat.setDecorFitsSystemWindows(window, false) + window.statusBarColor = Color.Transparent.toArgb() + val navigationBarColor = when { + Build.VERSION.SDK_INT >= 29 -> Color.Transparent.toArgb() + Build.VERSION.SDK_INT >= 26 -> Color(0xFF, 0xFF, 0xFF, 0x63).toArgb() + // Min sdk version for this app is 24, this block is for SDK versions 24 and 25 + else -> Color(0x00,0x00, 0x00, 0x50).toArgb() + } + window.navigationBarColor = navigationBarColor + val controller = WindowCompat.getInsetsController(window, view) + controller.isAppearanceLightStatusBars = !darkTheme + controller.isAppearanceLightNavigationBars = !darkTheme +}