BIT-955: Add edge-to-edge support (#162)

This commit is contained in:
David Perez
2023-10-25 16:32:40 -05:00
committed by Álison Fernandes
parent dc6d37dc32
commit d81c146f33
7 changed files with 29 additions and 8 deletions

View File

@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState
@@ -82,6 +83,7 @@ fun LandingScreen(
modifier = Modifier
.semantics { testTagsAsResourceId = true }
.background(MaterialTheme.colorScheme.surface)
.safeDrawingPadding()
.fillMaxHeight()
.verticalScroll(scrollState),
) {

View File

@@ -1,13 +1,19 @@
package com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar
import android.os.Parcelable
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBars
import androidx.compose.material3.BottomAppBar
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.NavigationBarItemDefaults
import androidx.compose.material3.Scaffold
import androidx.compose.material3.ScaffoldDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@@ -98,7 +104,11 @@ private fun VaultUnlockedNavBarScaffold(
generatorTabClickedAction: () -> Unit,
settingsTabClickedAction: () -> Unit,
) {
// This scaffold will host screens that contain top bars while not hosting one itself.
// We need to ignore the status bar insets here and let the content screens handle
// it themselves.
Scaffold(
contentWindowInsets = ScaffoldDefaults.contentWindowInsets.exclude(WindowInsets.statusBars),
bottomBar = {
BottomAppBar(
containerColor = MaterialTheme.colorScheme.surfaceContainer,
@@ -157,10 +167,14 @@ private fun VaultUnlockedNavBarScaffold(
}
},
) { innerPadding ->
// This NavHost will consume the navigation bars insets since the bottom bar
// is handling them and we do not want the child to receive them.
NavHost(
navController = navController,
startDestination = VAULT_ROUTE,
modifier = Modifier.padding(innerPadding),
modifier = Modifier
.consumeWindowInsets(WindowInsets.navigationBars)
.padding(innerPadding),
) {
vaultDestination()
sendDestination()

View File

@@ -14,7 +14,6 @@ import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat
@@ -46,8 +45,10 @@ fun BitwardenTheme(
if (!view.isInEditMode) {
SideEffect {
val window = (view.context as Activity).window
window.statusBarColor = colorScheme.surface.toArgb()
WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme
WindowCompat.setDecorFitsSystemWindows(window, false)
val insetsController = WindowCompat.getInsetsController(window, view)
insetsController.isAppearanceLightStatusBars = !darkTheme
insetsController.isAppearanceLightNavigationBars = !darkTheme
}
}