Change settings status bar color

This commit is contained in:
MM20
2026-01-24 13:01:16 +01:00
parent 14abfeb3c9
commit a0ad163f15

View File

@@ -3,6 +3,7 @@ package de.mm20.launcher2.ui.settings
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.activity.SystemBarStyle import androidx.activity.SystemBarStyle
import androidx.activity.compose.LocalActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
@@ -23,8 +24,14 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalView
import androidx.core.app.GrammaticalInflectionManagerCompat import androidx.core.app.GrammaticalInflectionManagerCompat
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.entryProvider import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.runtime.rememberNavBackStack import androidx.navigation3.runtime.rememberNavBackStack
@@ -148,7 +155,7 @@ class SettingsActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.enableEdgeToEdge(window)
val newRoute = getStartRoute(intent) val newRoute = getStartRoute(intent)
initialRoute = newRoute initialRoute = newRoute
@@ -324,6 +331,18 @@ class SettingsActivity : BaseActivity() {
} }
} }
val isDarkTheme = LocalDarkTheme.current
val lifecycleOwner = LocalLifecycleOwner.current
val activity = LocalActivity.current
val view = LocalView.current
LaunchedEffect(isDarkTheme) {
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
val insetsController = WindowInsetsControllerCompat(activity!!.window, view)
insetsController.isAppearanceLightStatusBars = !isDarkTheme
insetsController.isAppearanceLightNavigationBars = !isDarkTheme
}
}
val wallpaperColors by wallpaperColorsAsState() val wallpaperColors by wallpaperColorsAsState()
CompositionLocalProvider( CompositionLocalProvider(
LocalWallpaperColors provides wallpaperColors, LocalWallpaperColors provides wallpaperColors,
@@ -331,20 +350,9 @@ class SettingsActivity : BaseActivity() {
) { ) {
ProvideCompositionLocals { ProvideCompositionLocals {
LauncherTheme { LauncherTheme {
val systemBarColor = MaterialTheme.colorScheme.surfaceDim
val systemBarColorAlt = MaterialTheme.colorScheme.onSurface
val isDarkTheme = LocalDarkTheme.current
LaunchedEffect(isDarkTheme, systemBarColor, systemBarColorAlt) {
enableEdgeToEdge(
if (isDarkTheme) SystemBarStyle.dark(systemBarColor.toArgb())
else SystemBarStyle.light(
systemBarColor.toArgb(),
systemBarColorAlt.toArgb()
)
)
}
OverlayHost( OverlayHost(
modifier = Modifier.fillMaxSize() modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.surfaceContainer) .background(MaterialTheme.colorScheme.surfaceContainer)
) { ) {
NavDisplay( NavDisplay(