diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 3a96b0908..9fbb95717 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -22,10 +22,13 @@ import android.app.TaskStackBuilder import android.content.Intent import android.content.pm.PackageInfo import android.content.pm.PackageManager +import android.graphics.Color import android.hardware.usb.UsbManager import android.net.Uri +import android.os.Build import android.os.Bundle import android.widget.Toast +import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts @@ -41,7 +44,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalView import androidx.core.content.edit import androidx.core.net.toUri -import androidx.core.view.WindowCompat import androidx.lifecycle.lifecycleScope import com.geeksville.mesh.android.BindFailedException import com.geeksville.mesh.android.GeeksvilleApplication @@ -78,7 +80,15 @@ class MainActivity : private var showAppIntro by mutableStateOf(false) override fun onCreate(savedInstanceState: Bundle?) { - enableEdgeToEdge() + enableEdgeToEdge( + // Disable three-button navbar scrim on pre-Q devices + navigationBarStyle = SystemBarStyle.auto(Color.TRANSPARENT, Color.TRANSPARENT), + ) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // Disable three-button navbar scrim + window.setNavigationBarContrastEnforced(false) + } + super.onCreate(savedInstanceState) val prefs = UIViewModel.getPreferences(this) if (savedInstanceState == null) { @@ -93,7 +103,6 @@ class MainActivity : } } - WindowCompat.setDecorFitsSystemWindows(window, false) setContent { val theme by model.theme.collectAsState() val dynamic = theme == MODE_DYNAMIC diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt b/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt index 0e0f8b237..0e25f70a1 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt @@ -17,15 +17,13 @@ package com.geeksville.mesh.ui.intro -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Button -import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -47,17 +45,13 @@ internal fun IntroBottomBar( configureButtonText: String, showSkipButton: Boolean = true, ) { - Surface(shadowElevation = 8.dp) { - // Use Surface for elevation as per Material 3 guidelines - Row( - modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 20.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = if (showSkipButton) Arrangement.SpaceBetween else Arrangement.End, - ) { - if (showSkipButton) { - Button(onClick = onSkip) { Text(skipButtonText) } - } - Button(onClick = onConfigure) { Text(configureButtonText) } + BottomAppBar(contentPadding = PaddingValues(horizontal = 16.dp, vertical = 20.dp)) { + if (showSkipButton) { + Button(onClick = onSkip) { Text(skipButtonText) } } + + Spacer(modifier = Modifier.fillMaxWidth().weight(1f)) + + Button(onClick = onConfigure) { Text(configureButtonText) } } }