Increase row padding to 4dp and auto-select date on page change

Select the Monday of the week when WeekPager changes, and the 1st of
the month when CalendarPager changes, so the selected date always
matches the visible page.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-14 17:32:08 +08:00
parent a476ff01fc
commit 1cf2766e84
2 changed files with 6 additions and 3 deletions

View File

@ -121,7 +121,7 @@ fun CalendarMonthPage(
rowHeightPx = size.height rowHeightPx = size.height
} }
} }
.padding(vertical = 2.dp) .padding(vertical = 4.dp)
) { ) {
week.forEach { dayData -> week.forEach { dayData ->
DayCell( DayCell(

View File

@ -19,6 +19,7 @@ import androidx.compose.ui.draw.clipToBounds
import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.datetime.LocalDate
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import kotlinx.datetime.todayIn import kotlinx.datetime.todayIn
import kotlin.time.Clock import kotlin.time.Clock
@ -64,7 +65,7 @@ fun CalendarMonthView(
expandedGridHeightPx expandedGridHeightPx
} else 0 } else 0
val rowPaddingPx = with(density) { 2.dp.toPx() }.toInt() val rowPaddingPx = with(density) { 4.dp.toPx() }.toInt()
val cardTopPx = headerHeightPx + gridHeightPx + rowPaddingPx val cardTopPx = headerHeightPx + gridHeightPx + rowPaddingPx
val cardHeightPx = screenHeightPx - cardTopPx val cardHeightPx = screenHeightPx - cardTopPx
@ -106,7 +107,7 @@ fun CalendarMonthView(
WeekdayHeader( WeekdayHeader(
modifier = Modifier.fillMaxWidth().onSizeChanged { size -> modifier = Modifier.fillMaxWidth().onSizeChanged { size ->
weekdayHeaderHeightPx = size.height weekdayHeaderHeightPx = size.height
}.padding(bottom = 2.dp) }.padding(bottom = 4.dp)
) )
// 完全折叠且无动画时显示 WeekPager否则显示 CalendarPager含下拉恢复过程 // 完全折叠且无动画时显示 WeekPager否则显示 CalendarPager含下拉恢复过程
if (viewModel.isCollapsed && viewModel.collapseProgress >= 1f) { if (viewModel.isCollapsed && viewModel.collapseProgress >= 1f) {
@ -115,6 +116,7 @@ fun CalendarMonthView(
today = today, today = today,
onDateClick = { date -> viewModel.selectDate(date) }, onDateClick = { date -> viewModel.selectDate(date) },
onWeekChanged = { weekMonday -> onWeekChanged = { weekMonday ->
viewModel.selectDate(weekMonday)
currentYear = weekMonday.year currentYear = weekMonday.year
@Suppress("DEPRECATION") // monthNumber 无替代 APIkotlinx-datetime 尚未提供新接口 @Suppress("DEPRECATION") // monthNumber 无替代 APIkotlinx-datetime 尚未提供新接口
currentMonth = weekMonday.monthNumber currentMonth = weekMonday.monthNumber
@ -126,6 +128,7 @@ fun CalendarMonthView(
today = today, today = today,
onDateClick = { date -> viewModel.selectDate(date) }, onDateClick = { date -> viewModel.selectDate(date) },
onMonthChanged = { year, month -> onMonthChanged = { year, month ->
viewModel.selectDate(LocalDate(year, month, 1))
currentYear = year currentYear = year
currentMonth = month currentMonth = month
}, },