Set Compose TopAppBar to pure black in OLED theme

This commit is contained in:
Sylvia van Os
2026-01-07 17:17:49 +01:00
parent 01e08e4928
commit 93515d2f88

View File

@@ -1,6 +1,8 @@
package protect.card_locker.compose
import androidx.activity.OnBackPressedDispatcher
import androidx.appcompat.app.AppCompatDelegate
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -8,18 +10,38 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import protect.card_locker.R
import protect.card_locker.preferences.Settings
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CatimaTopAppBar(title: String, onBackPressedDispatcher: OnBackPressedDispatcher?) {
// Use pure black in OLED theme
val context = LocalContext.current
val settings = Settings(context)
val isDarkMode = when (settings.theme) {
AppCompatDelegate.MODE_NIGHT_NO -> false
AppCompatDelegate.MODE_NIGHT_YES -> true
else -> isSystemInDarkTheme()
}
val appBarColors = if (isDarkMode && settings.oledDark) {
TopAppBarDefaults.topAppBarColors().copy(containerColor = Color.Black)
} else {
TopAppBarDefaults.topAppBarColors()
}
TopAppBar(
modifier = Modifier.testTag("topbar_catima"),
title = { Text(text = title) },
colors = appBarColors,
navigationIcon = {
if (onBackPressedDispatcher != null) {
IconButton(onClick = { onBackPressedDispatcher.onBackPressed() }) {