年视图布局优化: 月份填满视图、加大字号、添加间距

- 4行用 weight(1f) 等分网格区域高度,月份均匀撑高填满视图
- 纵向 Arrangement 从 SpaceEvenly 改为 Top,去掉首行前/末行后大间隙
- 横向 Arrangement 从 SpaceEvenly 改为 SpaceBetween
- 第1行上方加 8dp padding,第4行下方加 8dp padding
- 月份之间横向加 8dp 间距(col0 end=4dp + col2 start=4dp)
- 月份标题字号 9→10sp,星期行 6→8sp,日期数字 6→8sp
- 日期行高 9→12sp,日期行之间加 padding(vertical=2.dp)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-18 10:42:56 +08:00
parent 17146e2bc0
commit d9326668a4

View File

@ -98,22 +98,38 @@ fun YearGridView(
.fillMaxWidth() .fillMaxWidth()
.weight(1f) .weight(1f)
.padding(horizontal = 4.dp), .padding(horizontal = 4.dp),
verticalArrangement = Arrangement.SpaceEvenly verticalArrangement = Arrangement.Top
) { ) {
(0 until 4).forEach { row -> (0 until 4).forEach { row ->
val verticalPadding = when (row) {
0 -> Modifier.padding(top = 8.dp)
3 -> Modifier.padding(bottom = 8.dp)
else -> Modifier
}
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier
horizontalArrangement = Arrangement.SpaceEvenly .fillMaxWidth()
.weight(1f)
.then(verticalPadding),
horizontalArrangement = Arrangement.SpaceBetween
) { ) {
(0 until 3).forEach { col -> (0 until 3).forEach { col ->
val month = row * 3 + col + 1 val month = row * 3 + col + 1
val horizontalPadding = when (col) {
0 -> Modifier.padding(end = 4.dp)
1 -> Modifier.padding(horizontal = 4.dp)
2 -> Modifier.padding(start = 4.dp)
else -> Modifier
}
MiniMonth( MiniMonth(
year = year, year = year,
month = month, month = month,
isSelected = month == selectedMonth, isSelected = month == selectedMonth,
today = today, today = today,
onClick = { onMonthClick(month) }, onClick = { onMonthClick(month) },
modifier = Modifier.weight(1f) modifier = Modifier
.weight(1f)
.then(horizontalPadding)
) )
} }
} }
@ -156,7 +172,7 @@ private fun MiniMonth(
Text( Text(
text = "${month}", text = "${month}",
color = titleColor, color = titleColor,
fontSize = 9.sp, fontSize = 10.sp,
fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal, fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal,
textAlign = TextAlign.Center textAlign = TextAlign.Center
) )
@ -169,7 +185,7 @@ private fun MiniMonth(
Text( Text(
text = label, text = label,
color = weekdayColor, color = weekdayColor,
fontSize = 6.sp, fontSize = 8.sp,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
modifier = Modifier.weight(1f) modifier = Modifier.weight(1f)
) )
@ -178,7 +194,9 @@ private fun MiniMonth(
// 日期网格 // 日期网格
days.chunked(7).forEach { week -> days.chunked(7).forEach { week ->
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier
.fillMaxWidth()
.padding(vertical = 2.dp),
horizontalArrangement = Arrangement.SpaceEvenly horizontalArrangement = Arrangement.SpaceEvenly
) { ) {
week.forEach { dayData -> week.forEach { dayData ->
@ -208,9 +226,9 @@ private fun MiniMonth(
Text( Text(
text = if (dayData.isCurrentMonth) dayData.date.day.toString() else "", text = if (dayData.isCurrentMonth) dayData.date.day.toString() else "",
color = color, color = color,
fontSize = 6.sp, fontSize = 8.sp,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
lineHeight = 9.sp lineHeight = 12.sp
) )
} }
} }