diff options
| author | 2024-05-15 19:53:52 +0800 | |
|---|---|---|
| committer | 2024-05-16 03:22:09 +0000 | |
| commit | 8c7b011d497aaedbe9052ed63e1b58c067df9b68 (patch) | |
| tree | f49219ada5eee2d63007f089ccac3a634a4bea9d | |
| parent | e8afa0317ecb532f6de15051f071a98be39eca6e (diff) | |
[Spa] Fix edge to edge when target SDK 35
Use WindowInsets.safeDrawing to guard.
Also import upstream AppBar changes up to
I4ff8372dc2020b319455ce95cdc1292d80cd2448
Fix: 340829742
Test: manual - with Gallery
Test: manual - with Settings
Change-Id: I02ea173f091c86a8910f93d4cf46f9c8148af3de
6 files changed, 27 insertions, 9 deletions
diff --git a/packages/SettingsLib/Spa/build.gradle.kts b/packages/SettingsLib/Spa/build.gradle.kts index e7823df7ce0e..45667f55882d 100644 --- a/packages/SettingsLib/Spa/build.gradle.kts +++ b/packages/SettingsLib/Spa/build.gradle.kts @@ -41,7 +41,7 @@ subprojects { defaultConfig { minSdk = 21 - targetSdk = 34 + targetSdk = 35 } } diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt index da1ee77bcbfb..e867a8f0a8d1 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt @@ -21,6 +21,7 @@ import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge import androidx.annotation.VisibleForTesting import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable @@ -30,7 +31,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier -import androidx.core.view.WindowCompat import androidx.navigation.NavBackStackEntry import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavGraphBuilder @@ -82,7 +82,7 @@ open class BrowseActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { setTheme(R.style.Theme_SpaLib) super.onCreate(savedInstanceState) - WindowCompat.setDecorFitsSystemWindows(window, false) + enableEdgeToEdge() spaEnvironment.logger.message(TAG, "onCreate", category = LogCategory.FRAMEWORK) setContent { diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBar.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBar.kt index 36cd136602f3..9a344c3d7f14 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBar.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBar.kt @@ -35,6 +35,7 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LocalContentColor @@ -42,11 +43,11 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.material3.TopAppBarState import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.NonRestartableComposable import androidx.compose.runtime.SideEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.mutableFloatStateOf @@ -79,7 +80,12 @@ import kotlin.math.abs import kotlin.math.max import kotlin.math.roundToInt -@OptIn(ExperimentalMaterial3Api::class) +private val windowInsets: WindowInsets + @Composable + @NonRestartableComposable + get() = WindowInsets.safeDrawing + .only(WindowInsetsSides.Horizontal + WindowInsetsSides.Top) + @Composable internal fun CustomizedTopAppBar( title: @Composable () -> Unit, @@ -91,7 +97,7 @@ internal fun CustomizedTopAppBar( titleTextStyle = MaterialTheme.typography.titleMedium, navigationIcon = navigationIcon, actions = actions, - windowInsets = TopAppBarDefaults.windowInsets, + windowInsets = windowInsets, colors = topAppBarColors(), ) } @@ -118,7 +124,7 @@ internal fun CustomizedLargeTopAppBar( navigationIcon = navigationIcon, actions = actions, colors = topAppBarColors(), - windowInsets = TopAppBarDefaults.windowInsets, + windowInsets = windowInsets, pinnedHeight = ContainerHeight, scrollBehavior = scrollBehavior, ) @@ -336,7 +342,7 @@ private fun TwoRowsTopAppBar( Modifier.draggable( orientation = Orientation.Vertical, state = rememberDraggableState { delta -> - scrollBehavior.state.heightOffset = scrollBehavior.state.heightOffset + delta + scrollBehavior.state.heightOffset += delta }, onDragStopped = { velocity -> settleAppBar( @@ -411,6 +417,7 @@ private fun TwoRowsTopAppBar( * (leading icon), a title (header), and action icons (trailing icons). Note that the navigation and * the actions are optional. * + * @param modifier a [Modifier] * @param heightPx the total height this layout is capped to * @param navigationIconContentColor the content color that will be applied via a * [LocalContentColor] when composing the navigation icon diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt index a49b358ca782..4a7937a3c2ac 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt @@ -22,9 +22,11 @@ import androidx.compose.foundation.focusable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.ExperimentalMaterial3Api @@ -92,6 +94,7 @@ fun SearchScaffold( ) }, containerColor = MaterialTheme.colorScheme.settingsBackground, + contentWindowInsets = WindowInsets.safeDrawing, ) { paddingValues -> Box( Modifier diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt index af7a14647570..4cf741e517be 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt @@ -23,7 +23,9 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold @@ -57,6 +59,7 @@ fun SettingsScaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { SettingsTopAppBar(title, scrollBehavior, actions) }, containerColor = MaterialTheme.colorScheme.settingsBackground, + contentWindowInsets = WindowInsets.safeDrawing, ) { paddingValues -> Box(Modifier.padding(paddingValues.horizontalValues())) { content(paddingValues.verticalValues()) diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SuwScaffold.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SuwScaffold.kt index fc409302a2eb..4726dadc3688 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SuwScaffold.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SuwScaffold.kt @@ -21,7 +21,9 @@ import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -55,7 +57,10 @@ fun SuwScaffold( content: @Composable () -> Unit, ) { ActivityTitle(title) - Scaffold(containerColor = MaterialTheme.colorScheme.settingsBackground) { innerPadding -> + Scaffold( + containerColor = MaterialTheme.colorScheme.settingsBackground, + contentWindowInsets = WindowInsets.safeDrawing, + ) { innerPadding -> BoxWithConstraints( Modifier .padding(innerPadding) |