fix(#40): tint status and navigation bars to match active theme and flip icon appearance #46
@@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.SideEffect
|
import androidx.compose.runtime.SideEffect
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.luminance
|
||||||
import androidx.compose.ui.graphics.toArgb
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.compose.ui.platform.LocalView
|
import androidx.compose.ui.platform.LocalView
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
@@ -25,6 +26,8 @@ fun AppTheme(
|
|||||||
darkTheme -> darkColorScheme()
|
darkTheme -> darkColorScheme()
|
||||||
else -> lightColorScheme()
|
else -> lightColorScheme()
|
||||||
}
|
}
|
||||||
|
StatusBarColor(colorScheme.background)
|
||||||
|
NavigationBarColor(colorScheme.background)
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
@@ -45,9 +48,12 @@ fun NavigationBarColor(color: Color) {
|
|||||||
val activity = LocalActivity.current
|
val activity = LocalActivity.current
|
||||||
if (!view.isInEditMode) {
|
if (!view.isInEditMode) {
|
||||||
SideEffect {
|
SideEffect {
|
||||||
activity?.window?.let {
|
activity?.window?.let { window ->
|
||||||
it.navigationBarColor = color.toArgb()
|
window.navigationBarColor = color.toArgb()
|
||||||
WindowCompat.setDecorFitsSystemWindows(it, false)
|
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
|
val activity = LocalActivity.current
|
||||||
if (!view.isInEditMode) {
|
if (!view.isInEditMode) {
|
||||||
SideEffect {
|
SideEffect {
|
||||||
activity?.window?.let {
|
activity?.window?.let { window ->
|
||||||
it.statusBarColor = color.toArgb()
|
window.statusBarColor = color.toArgb()
|
||||||
WindowCompat.setDecorFitsSystemWindows(it, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
|
WindowCompat.getInsetsController(window, view).apply {
|
||||||
|
isAppearanceLightStatusBars = color.luminance() > 0.5f
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user