fix(UI): Apply window insets on welcome screens (#2734)

This commit is contained in:
Phil Oliver
2025-08-15 14:25:25 -04:00
committed by GitHub
parent 14422cd2c0
commit 570f323328
2 changed files with 22 additions and 19 deletions

View File

@@ -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

View File

@@ -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) }
}
}