fix: 待办列表和操作按钮被系统状态栏遮挡

This commit is contained in:
Super12138 2025-01-16 10:01:41 +08:00
parent bfc774be8e
commit ae608fae32
2 changed files with 26 additions and 2 deletions

View file

@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeContentPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items
@ -45,7 +46,8 @@ fun ManagerFragment(
) {
LazyColumn(
state = state,
contentPadding = PaddingValues(horizontal = TodoDefaults.screenPadding)
contentPadding = PaddingValues(horizontal = TodoDefaults.screenPadding),
modifier = Modifier.safeContentPadding()
) {
if (list.isEmpty()) {
item {

View file

@ -4,6 +4,7 @@ import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.safeContentPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Delete
@ -18,8 +19,12 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import cn.super12138.todo.R
@OptIn(ExperimentalMaterial3Api::class)
@ -61,7 +66,10 @@ fun TodoTopAppBar(
)
},
actions = {
AnimatedContent(selectedMode) { inSelectedMode ->
AnimatedContent(
targetState = selectedMode,
modifier = Modifier.safeContentPadding()
) { inSelectedMode ->
if (!inSelectedMode) {
IconButton(
onClick = toSettingsPage
@ -94,4 +102,18 @@ fun TodoTopAppBar(
containerColor = animatedTopAppBarColors
)
)
}
@Preview(locale = "zh-rCN", showBackground = true)
@Composable
private fun TodoTopAppBarPreview() {
var selectedMode by remember { mutableStateOf(false) }
TodoTopAppBar(
selectedTodoIds = (1..10).toList(),
selectedMode = selectedMode,
onCancelSelect = { selectedMode = !selectedMode },
onSelectAll = { },
onDeleteSelectedTodo = { },
toSettingsPage = { selectedMode = !selectedMode }
)
}