fix: 初步修复屏幕边距问题&优化三键导航显示效果

This commit is contained in:
Super12138 2025-04-27 18:46:31 +08:00
parent 3bf982218d
commit 2bcfa9272c
8 changed files with 15 additions and 24 deletions

View file

@ -31,6 +31,9 @@ class CrashActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge() enableEdgeToEdge()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
window.isNavigationBarContrastEnforced = false
}
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val crashLogs = intent.getStringExtra("crash_logs") val crashLogs = intent.getStringExtra("crash_logs")

View file

@ -1,5 +1,6 @@
package cn.super12138.todo.ui.activities package cn.super12138.todo.ui.activities
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager import android.view.WindowManager
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
@ -26,6 +27,9 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen() installSplashScreen()
enableEdgeToEdge() enableEdgeToEdge()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
window.isNavigationBarContrastEnforced = false
}
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContent { setContent {
val mainViewModel: MainViewModel = viewModel() val mainViewModel: MainViewModel = viewModel()

View file

@ -4,9 +4,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.safeContent
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowBack import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
@ -46,7 +43,7 @@ fun LargeTopAppBarScaffold(
snackbarHost: @Composable () -> Unit = {}, snackbarHost: @Composable () -> Unit = {},
floatingActionButton: @Composable () -> Unit = {}, floatingActionButton: @Composable () -> Unit = {},
floatingActionButtonPosition: FabPosition = FabPosition.End, floatingActionButtonPosition: FabPosition = FabPosition.End,
contentWindowInsets: WindowInsets = WindowInsets.safeContent.exclude(WindowInsets.ime), contentWindowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets,
content: @Composable (PaddingValues) -> Unit content: @Composable (PaddingValues) -> Unit
) { ) {
val view = LocalView.current val view = LocalView.current

View file

@ -66,13 +66,13 @@ import cn.super12138.todo.utils.VibrationUtils
@OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class) @OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class)
@Composable @Composable
fun TodoEditorPage( fun TodoEditorPage(
modifier: Modifier = Modifier,
toDo: TodoEntity? = null, toDo: TodoEntity? = null,
onSave: (TodoEntity) -> Unit, onSave: (TodoEntity) -> Unit,
onDelete: () -> Unit, onDelete: () -> Unit,
onNavigateUp: () -> Unit, onNavigateUp: () -> Unit,
sharedTransitionScope: SharedTransitionScope, sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope, animatedVisibilityScope: AnimatedVisibilityScope
modifier: Modifier = Modifier
) { ) {
var showExitConfirmDialog by rememberSaveable { mutableStateOf(false) } var showExitConfirmDialog by rememberSaveable { mutableStateOf(false) }
var showDeleteConfirmDialog by rememberSaveable { mutableStateOf(false) } var showDeleteConfirmDialog by rememberSaveable { mutableStateOf(false) }

View file

@ -11,12 +11,8 @@ import androidx.compose.animation.fadeOut
import androidx.compose.animation.shrinkOut import androidx.compose.animation.shrinkOut
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeContent
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.Add
@ -123,7 +119,6 @@ fun MainPage(
} }
} }
}, },
contentWindowInsets = WindowInsets.safeContent.exclude(WindowInsets.ime),
modifier = modifier modifier = modifier
) { innerPadding -> ) { innerPadding ->
if (windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT) { if (windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT) {

View file

@ -28,6 +28,7 @@ import cn.super12138.todo.ui.pages.main.components.TodoCard
@OptIn(ExperimentalSharedTransitionApi::class) @OptIn(ExperimentalSharedTransitionApi::class)
@Composable @Composable
fun ManagerFragment( fun ManagerFragment(
modifier: Modifier = Modifier,
state: LazyListState, state: LazyListState,
list: List<TodoEntity>, list: List<TodoEntity>,
onItemClick: (TodoEntity) -> Unit = {}, onItemClick: (TodoEntity) -> Unit = {},
@ -35,8 +36,7 @@ fun ManagerFragment(
onItemChecked: (TodoEntity) -> Unit = {}, onItemChecked: (TodoEntity) -> Unit = {},
selectedTodoIds: List<Int>, selectedTodoIds: List<Int>,
sharedTransitionScope: SharedTransitionScope, sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope, animatedVisibilityScope: AnimatedVisibilityScope
modifier: Modifier = Modifier
) { ) {
val context = LocalContext.current val context = LocalContext.current
LazyColumnCustomScrollBar( LazyColumnCustomScrollBar(

View file

@ -47,6 +47,7 @@ import cn.super12138.todo.utils.VibrationUtils
@OptIn(ExperimentalFoundationApi::class, ExperimentalSharedTransitionApi::class) @OptIn(ExperimentalFoundationApi::class, ExperimentalSharedTransitionApi::class)
@Composable @Composable
fun TodoCard( fun TodoCard(
modifier: Modifier = Modifier,
id: Int, id: Int,
content: String, content: String,
subject: String, subject: String,
@ -57,8 +58,7 @@ fun TodoCard(
onCardLongClick: () -> Unit = {}, onCardLongClick: () -> Unit = {},
onChecked: () -> Unit = {}, onChecked: () -> Unit = {},
sharedTransitionScope: SharedTransitionScope, sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope, animatedVisibilityScope: AnimatedVisibilityScope
modifier: Modifier = Modifier
) { ) {
val view = LocalView.current val view = LocalView.current
val context = LocalContext.current val context = LocalContext.current

View file

@ -11,11 +11,6 @@ import androidx.compose.animation.scaleIn
import androidx.compose.animation.shrinkOut import androidx.compose.animation.shrinkOut
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.safeContent
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Close import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Delete import androidx.compose.material.icons.outlined.Delete
@ -117,10 +112,7 @@ fun TodoTopAppBar(
).togetherWith( ).togetherWith(
fadeOut(animationSpec = tween(90)) fadeOut(animationSpec = tween(90))
) )
}, }
modifier = Modifier.windowInsetsPadding(
WindowInsets.safeContent.exclude(WindowInsets.ime)
)
) { inSelectedMode -> ) { inSelectedMode ->
if (!inSelectedMode) { if (!inSelectedMode) {
IconButton( IconButton(