Skip to content

Commit cc27fac

Browse files
committed
Make the Adaptive Codelab edge-to-edge
1 parent 7d06be4 commit cc27fac

3 files changed

Lines changed: 22 additions & 17 deletions

File tree

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/MainActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package com.example.reply.ui
1818

19+
import android.os.Build
1920
import android.os.Bundle
2021
import androidx.activity.ComponentActivity
2122
import androidx.activity.compose.setContent
23+
import androidx.activity.enableEdgeToEdge
2224
import androidx.activity.viewModels
2325
import androidx.compose.runtime.Composable
2426
import androidx.compose.runtime.getValue
@@ -34,6 +36,11 @@ class MainActivity : ComponentActivity() {
3436
override fun onCreate(savedInstanceState: Bundle?) {
3537
super.onCreate(savedInstanceState)
3638

39+
enableEdgeToEdge()
40+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
41+
window.isNavigationBarContrastEnforced = false
42+
}
43+
3744
setContent {
3845
ReplyTheme {
3946
val uiState by viewModel.uiState.collectAsStateWithLifecycle()

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyListContent.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ import androidx.compose.foundation.background
2121
import androidx.compose.foundation.layout.Arrangement
2222
import androidx.compose.foundation.layout.Column
2323
import androidx.compose.foundation.layout.Row
24+
import androidx.compose.foundation.layout.WindowInsets
25+
import androidx.compose.foundation.layout.asPaddingValues
2426
import androidx.compose.foundation.layout.fillMaxWidth
2527
import androidx.compose.foundation.layout.padding
28+
import androidx.compose.foundation.layout.safeContent
29+
import androidx.compose.foundation.layout.safeDrawing
2630
import androidx.compose.foundation.layout.size
2731
import androidx.compose.foundation.lazy.LazyColumn
2832
import androidx.compose.foundation.lazy.items
@@ -55,7 +59,10 @@ fun ReplyListPane(
5559
onEmailClick: (Email) -> Unit,
5660
modifier: Modifier = Modifier
5761
) {
58-
LazyColumn(modifier = modifier.fillMaxWidth()) {
62+
LazyColumn(
63+
modifier = modifier.fillMaxWidth(),
64+
contentPadding = WindowInsets.safeDrawing.asPaddingValues()
65+
) {
5966
item {
6067
ReplySearchBar(modifier = Modifier.fillMaxWidth())
6168
}
@@ -73,7 +80,10 @@ fun ReplyDetailPane(
7380
email: Email,
7481
modifier: Modifier = Modifier
7582
) {
76-
LazyColumn(modifier = modifier.fillMaxWidth()) {
83+
LazyColumn(
84+
modifier = modifier.fillMaxWidth(),
85+
contentPadding = WindowInsets.safeDrawing.asPaddingValues()
86+
) {
7787
item {
7888
ReplyEmailThreadItem(email)
7989
}
@@ -156,13 +166,13 @@ fun ReplyEmailThreadItem(
156166
modifier: Modifier = Modifier
157167
) {
158168
Card(
159-
modifier = modifier.padding(horizontal = 16.dp, vertical = 4.dp),
169+
modifier = modifier.padding(horizontal = 16.dp),
160170
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)
161171
) {
162172
Column(
163173
modifier = Modifier
164174
.fillMaxWidth()
165-
.padding(20.dp)
175+
.padding(horizontal = 20.dp)
166176
) {
167177
Row(modifier = Modifier.fillMaxWidth()) {
168178
ReplyProfileImage(
@@ -264,7 +274,7 @@ fun ReplySearchBar(modifier: Modifier = Modifier) {
264274
Row(
265275
modifier = modifier
266276
.fillMaxWidth()
267-
.padding(16.dp)
277+
.padding(horizontal = 16.dp)
268278
.background(MaterialTheme.colorScheme.surface, CircleShape),
269279
verticalAlignment = Alignment.CenterVertically
270280
) {

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/theme/Theme.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.example.reply.ui.theme
1818

19-
import android.app.Activity
2019
import android.os.Build
2120
import androidx.compose.foundation.isSystemInDarkTheme
2221
import androidx.compose.material3.MaterialTheme
@@ -25,11 +24,7 @@ import androidx.compose.material3.dynamicDarkColorScheme
2524
import androidx.compose.material3.dynamicLightColorScheme
2625
import androidx.compose.material3.lightColorScheme
2726
import androidx.compose.runtime.Composable
28-
import androidx.compose.runtime.SideEffect
29-
import androidx.compose.ui.graphics.toArgb
3027
import androidx.compose.ui.platform.LocalContext
31-
import androidx.compose.ui.platform.LocalView
32-
import androidx.core.view.ViewCompat
3328

3429
// Material 3 color schemes
3530
private val replyDarkColorScheme = darkColorScheme(
@@ -104,13 +99,6 @@ fun ReplyTheme(
10499
darkTheme -> replyDarkColorScheme
105100
else -> replyLightColorScheme
106101
}
107-
val view = LocalView.current
108-
if (!view.isInEditMode) {
109-
SideEffect {
110-
(view.context as Activity).window.statusBarColor = replyColorScheme.primary.toArgb()
111-
ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme
112-
}
113-
}
114102

115103
MaterialTheme(
116104
colorScheme = replyColorScheme,

0 commit comments

Comments
 (0)