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

@ -17,7 +17,8 @@
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask"
android:theme="@style/LaunchTheme">
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

View file

@ -7,13 +7,15 @@
<item name="android:colorActivatedHighlight">@android:color/transparent</item>
<item name="android:colorControlNormal">@color/dark_border</item>
<item name="android:colorPrimaryDark">@color/dark_notification_bar</item>
<item name="android:navigationBarColor">@color/dark_navigation_bar_background</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:popupTheme">@android:style/ThemeOverlay.Material</item>
<item name="android:textCursorDrawable">@null</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">default</item>
</style>
<style name="ButtonStyle" parent="android:Widget.Material.Button">

View file

@ -51,7 +51,6 @@
<!-- Dark System -->
<color name="dark_border">@color/grey_666666</color>
<color name="dark_navigation_bar_background">@color/grey_191919</color>
<color name="dark_notification_bar">@color/grey_191919</color>
<color name="dark_primary">@color/blue_B2C5FF</color>
<color name="dark_on_primary">@color/blue_002B74</color>

View file

@ -8,13 +8,15 @@
<item name="android:colorControlNormal">@color/border</item>
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/notification_bar</item>
<item name="android:navigationBarColor">@android:color/black</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:popupTheme">@android:style/ThemeOverlay.Material.Light</item>
<item name="android:textCursorDrawable">@null</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">default</item>
</style>
<style name="ButtonStyle" parent="android:Widget.Material.Button">