From 4c53f234cf367a6881e99227a0e2c18f4e8c7465 Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 26 May 2026 13:54:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8E=BB=E6=8E=89=20CalendarPager=20?= =?UTF-8?q?=E2=86=94=20WeekPager=20=E5=88=87=E6=8D=A2=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=8A=98=E5=8F=A0=E9=97=AA=E7=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CalendarPager 在 collapseProgress=1.0 时只渲染 anchor 行, 效果和 WeekPager 相同,但避免了切换导致的视觉跳跃。 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../plus/rua/project/ui/CalendarMonthView.kt | 56 +++++-------------- .../kotlin/plus/rua/project/ui/WeekPager.kt | 3 + 2 files changed, 17 insertions(+), 42 deletions(-) diff --git a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt index b259462..650f28f 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt @@ -520,48 +520,20 @@ private fun CalendarPagerArea( modifier } - if (isCollapsed && collapseProgress >= 1f) { - WeekPager( - selectedDate = selectedDate, - today = today, - onDateClick = onDateClick, - onWeekChanged = { weekMonday -> - val weekSunday = weekMonday.plus(DatePeriod(days = 6)) - val date = when { - today in weekMonday..weekSunday -> today - weekMonday.month != weekSunday.month -> { - if (weekMonday < selectedDate) { - @Suppress("DEPRECATION") // monthNumber 无替代 API - LocalDate(weekSunday.year, weekSunday.month.number, 1) - } else { - weekMonday - } - } - - else -> weekMonday - } - onDateClick(date) - }, - shiftKindAt = shiftKindAt, - showLegalHoliday = showLegalHoliday, - modifier = pagerModifier - ) - } else { - CalendarPager( - selectedDate = selectedDate, - today = today, - onDateClick = onDateClick, - onMonthChanged = onMonthChanged, - collapseProgress = collapseProgress, - rowHeightPx = rowHeightPx, - effectiveWeeks = effectiveWeeks, - shiftKindAt = shiftKindAt, - showLegalHoliday = showLegalHoliday, - onRowHeightMeasured = onRowHeightMeasured, - pagerState = pagerState, - modifier = pagerModifier - ) - } + CalendarPager( + selectedDate = selectedDate, + today = today, + onDateClick = onDateClick, + onMonthChanged = onMonthChanged, + collapseProgress = collapseProgress, + rowHeightPx = rowHeightPx, + effectiveWeeks = effectiveWeeks, + shiftKindAt = shiftKindAt, + showLegalHoliday = showLegalHoliday, + onRowHeightMeasured = onRowHeightMeasured, + pagerState = pagerState, + modifier = pagerModifier + ) } @Composable diff --git a/core/src/main/kotlin/plus/rua/project/ui/WeekPager.kt b/core/src/main/kotlin/plus/rua/project/ui/WeekPager.kt index 602e402..446f5cf 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/WeekPager.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/WeekPager.kt @@ -1,8 +1,10 @@ package plus.rua.project.ui +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerDefaults import androidx.compose.foundation.pager.rememberPagerState @@ -89,6 +91,7 @@ fun WeekPager( modifier = Modifier .alpha(alpha) .fillMaxWidth() + .background(MaterialTheme.colorScheme.surface) .padding(vertical = ROW_PADDING_DP.dp) ) { (0 until 7).forEach { dayOffset ->