Skip to content

Commit 251a7d8

Browse files
committed
fix: handle edge-to-edge properly (#15)
1 parent bec7351 commit 251a7d8

File tree

8 files changed

+60
-21
lines changed

8 files changed

+60
-21
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.raival.compose.file.explorer.common.compose
2+
3+
import androidx.compose.foundation.layout.WindowInsets
4+
import androidx.compose.foundation.layout.fillMaxSize
5+
import androidx.compose.foundation.layout.ime
6+
import androidx.compose.foundation.layout.navigationBars
7+
import androidx.compose.foundation.layout.statusBars
8+
import androidx.compose.foundation.layout.windowInsetsPadding
9+
import androidx.compose.material3.MaterialTheme
10+
import androidx.compose.material3.Surface
11+
import androidx.compose.runtime.Composable
12+
import androidx.compose.ui.Modifier
13+
14+
@Composable
15+
fun SafeSurface(
16+
modifier: Modifier = Modifier,
17+
content: @Composable () -> Unit
18+
) {
19+
Surface(
20+
modifier = Modifier.fillMaxSize()
21+
.windowInsetsPadding(WindowInsets.navigationBars)
22+
.windowInsetsPadding(WindowInsets.statusBars)
23+
.windowInsetsPadding(WindowInsets.ime),
24+
color = MaterialTheme.colorScheme.surfaceContainerLowest
25+
) {
26+
content()
27+
}
28+
}

app/src/main/java/com/raival/compose/file/explorer/screen/main/MainActivity.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@ package com.raival.compose.file.explorer.screen.main
33
import android.os.Bundle
44
import androidx.activity.compose.BackHandler
55
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
67
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.WindowInsets
79
import androidx.compose.foundation.layout.fillMaxSize
10+
import androidx.compose.foundation.layout.ime
11+
import androidx.compose.foundation.layout.imeAnimationSource
12+
import androidx.compose.foundation.layout.navigationBars
13+
import androidx.compose.foundation.layout.safeContentPadding
14+
import androidx.compose.foundation.layout.statusBars
15+
import androidx.compose.foundation.layout.windowInsetsPadding
816
import androidx.compose.material3.MaterialTheme
917
import androidx.compose.material3.ModalNavigationDrawer
1018
import androidx.compose.material3.Surface
@@ -16,6 +24,7 @@ import androidx.lifecycle.Lifecycle
1624
import androidx.lifecycle.compose.LifecycleEventEffect
1725
import com.raival.compose.file.explorer.App.Companion.globalClass
1826
import com.raival.compose.file.explorer.base.BaseActivity
27+
import com.raival.compose.file.explorer.common.compose.SafeSurface
1928
import com.raival.compose.file.explorer.screen.main.compose.DrawerContent
2029
import com.raival.compose.file.explorer.screen.main.compose.JumpToPathDialog
2130
import com.raival.compose.file.explorer.screen.main.compose.NewTabDialog
@@ -34,16 +43,14 @@ class MainActivity : BaseActivity() {
3443

3544
override fun onCreate(savedInstanceState: Bundle?) {
3645
super.onCreate(savedInstanceState)
46+
enableEdgeToEdge()
3747
checkPermissions()
3848
}
3949

4050
override fun onPermissionGranted() {
4151
setContent {
4252
FileExplorerTheme {
43-
Surface(
44-
modifier = Modifier.fillMaxSize(),
45-
color = MaterialTheme.colorScheme.surfaceContainerLowest
46-
) {
53+
SafeSurface(modifier = Modifier.fillMaxSize()) {
4754
val context = LocalContext.current
4855
val coroutineScope = rememberCoroutineScope()
4956
val mainActivityManager = globalClass.mainActivityManager

app/src/main/java/com/raival/compose/file/explorer/screen/preferences/PreferencesActivity.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ package com.raival.compose.file.explorer.screen.preferences
33
import android.annotation.SuppressLint
44
import android.os.Bundle
55
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
67
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.WindowInsets
79
import androidx.compose.foundation.layout.fillMaxSize
10+
import androidx.compose.foundation.layout.navigationBars
811
import androidx.compose.foundation.layout.padding
912
import androidx.compose.foundation.rememberScrollState
1013
import androidx.compose.foundation.verticalScroll
@@ -25,6 +28,7 @@ import com.raival.compose.file.explorer.ui.theme.FileExplorerTheme
2528
class PreferencesActivity : BaseActivity() {
2629
override fun onCreate(savedInstanceState: Bundle?) {
2730
super.onCreate(savedInstanceState)
31+
enableEdgeToEdge()
2832
checkPermissions()
2933
}
3034

@@ -44,7 +48,10 @@ class PreferencesActivity : BaseActivity() {
4448
Modifier
4549
.fillMaxSize()
4650
.verticalScroll(rememberScrollState())
47-
.padding(top = paddingValues.calculateTopPadding())
51+
.padding(
52+
top = paddingValues.calculateTopPadding(),
53+
bottom = paddingValues.calculateBottomPadding()
54+
)
4855
) {
4956
Space(size = 4.dp)
5057

app/src/main/java/com/raival/compose/file/explorer/screen/textEditor/TextEditorActivity.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.raival.compose.file.explorer.screen.textEditor
33
import android.os.Bundle
44
import androidx.activity.compose.BackHandler
55
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
67
import androidx.compose.foundation.layout.Column
78
import androidx.compose.foundation.layout.fillMaxSize
89
import androidx.compose.material3.HorizontalDivider
@@ -15,6 +16,7 @@ import androidx.lifecycle.compose.LifecycleEventEffect
1516
import com.raival.compose.file.explorer.App.Companion.globalClass
1617
import com.raival.compose.file.explorer.R
1718
import com.raival.compose.file.explorer.base.BaseActivity
19+
import com.raival.compose.file.explorer.common.compose.SafeSurface
1820
import com.raival.compose.file.explorer.common.extension.setContent
1921
import com.raival.compose.file.explorer.screen.textEditor.compose.BottomBarView
2022
import com.raival.compose.file.explorer.screen.textEditor.compose.CodeEditorView
@@ -34,6 +36,7 @@ class TextEditorActivity : BaseActivity() {
3436

3537
override fun onCreate(savedInstanceState: Bundle?) {
3638
super.onCreate(savedInstanceState)
39+
enableEdgeToEdge()
3740
checkPermissions()
3841
}
3942

@@ -54,10 +57,7 @@ class TextEditorActivity : BaseActivity() {
5457

5558
setContent {
5659
FileExplorerTheme {
57-
Surface(
58-
modifier = Modifier.fillMaxSize(),
59-
color = colorScheme.surfaceContainerLowest
60-
) {
60+
SafeSurface(modifier = Modifier.fillMaxSize()) {
6161
Column(
6262
Modifier.fillMaxSize(),
6363
horizontalAlignment = Alignment.CenterHorizontally

app/src/main/java/com/raival/compose/file/explorer/screen/viewer/ViewerActivity.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.raival.compose.file.explorer.screen.viewer
22

33
import android.net.Uri
44
import android.os.Bundle
5+
import androidx.activity.enableEdgeToEdge
56
import com.raival.compose.file.explorer.App.Companion.globalClass
67
import com.raival.compose.file.explorer.base.BaseActivity
78
import com.raival.compose.file.explorer.common.extension.randomString
@@ -17,6 +18,8 @@ abstract class ViewerActivity : BaseActivity() {
1718
override fun onCreate(savedInstanceState: Bundle?) {
1819
super.onCreate(savedInstanceState)
1920

21+
enableEdgeToEdge()
22+
2023
if (intent.data == null) {
2124
finish()
2225
return

app/src/main/java/com/raival/compose/file/explorer/screen/viewer/image/ImageViewerActivity.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import androidx.compose.ui.res.painterResource
1919
import coil3.compose.AsyncImage
2020
import coil3.compose.AsyncImagePainter
2121
import com.raival.compose.file.explorer.R
22+
import com.raival.compose.file.explorer.common.compose.SafeSurface
2223
import com.raival.compose.file.explorer.common.extension.read
2324
import com.raival.compose.file.explorer.screen.viewer.ViewerActivity
2425
import com.raival.compose.file.explorer.screen.viewer.ViewerInstance
@@ -35,10 +36,7 @@ class ImageViewerActivity : ViewerActivity() {
3536
override fun onReady(instance: ViewerInstance) {
3637
setContent {
3738
FileExplorerTheme {
38-
Surface(
39-
modifier = Modifier.fillMaxSize(),
40-
color = colorScheme.surfaceContainerLowest
41-
) {
39+
SafeSurface(modifier = Modifier.fillMaxSize()) {
4240
Box(
4341
Modifier.fillMaxSize(),
4442
contentAlignment = Alignment.Center

app/src/main/java/com/raival/compose/file/explorer/screen/viewer/media/MediaViewerActivity.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import androidx.media3.common.Player.Listener
4242
import androidx.media3.ui.PlayerView
4343
import com.raival.compose.file.explorer.App.Companion.globalClass
4444
import com.raival.compose.file.explorer.R
45+
import com.raival.compose.file.explorer.common.compose.SafeSurface
4546
import com.raival.compose.file.explorer.common.compose.Space
4647
import com.raival.compose.file.explorer.common.extension.name
4748
import com.raival.compose.file.explorer.screen.viewer.ViewerActivity
@@ -65,10 +66,7 @@ class MediaViewerActivity : ViewerActivity() {
6566
if (instance is MediaViewerInstance) {
6667
setContent {
6768
FileExplorerTheme {
68-
Surface(
69-
modifier = Modifier.fillMaxSize(),
70-
color = colorScheme.background
71-
) {
69+
SafeSurface(modifier = Modifier.fillMaxSize()) {
7270
Box(
7371
Modifier
7472
.fillMaxSize(),

app/src/main/java/com/raival/compose/file/explorer/screen/viewer/pdf/PdfViewerActivity.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import androidx.compose.ui.text.style.TextAlign
3737
import androidx.compose.ui.unit.dp
3838
import androidx.compose.ui.unit.sp
3939
import com.raival.compose.file.explorer.App.Companion.globalClass
40+
import com.raival.compose.file.explorer.common.compose.SafeSurface
4041
import com.raival.compose.file.explorer.common.extension.dp
4142
import com.raival.compose.file.explorer.screen.viewer.ViewerActivity
4243
import com.raival.compose.file.explorer.screen.viewer.ViewerInstance
@@ -59,10 +60,7 @@ class PdfViewerActivity : ViewerActivity() {
5960
if (instance is PdfViewerInstance) {
6061
setContent {
6162
FileExplorerTheme {
62-
Surface(
63-
modifier = Modifier.fillMaxSize(),
64-
color = colorScheme.surfaceContainerLowest
65-
) {
63+
SafeSurface(modifier = Modifier.fillMaxSize()) {
6664
Box(
6765
Modifier.fillMaxSize(),
6866
contentAlignment = Alignment.TopCenter

0 commit comments

Comments
 (0)