feat:调整节日倒计时的布局

This commit is contained in:
amos
2025-12-18 16:24:04 +08:00
parent 896bbbfe45
commit bf88aac937

View File

@@ -293,39 +293,39 @@ private fun HolidayCountdown() {
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
// Main Holiday Card
// Main Holiday Card - Compact
Column(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(20.dp))
.border(1.dp, MaterialTheme.colorScheme.outlineVariant, RoundedCornerShape(20.dp))
.padding(vertical = 24.dp, horizontal = 16.dp),
.clip(RoundedCornerShape(16.dp))
.border(1.dp, MaterialTheme.colorScheme.outlineVariant, RoundedCornerShape(16.dp))
.padding(vertical = 16.dp, horizontal = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = mainHoliday.holiday.emoji,
fontSize = 48.sp
fontSize = 36.sp
)
Spacer(modifier = Modifier.height(6.dp))
Text(
text = mainHoliday.holiday.name,
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colorScheme.onBackground
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = mainHoliday.holiday.name,
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colorScheme.onBackground
)
Spacer(modifier = Modifier.height(12.dp))
Text(
text = mainHoliday.getDaysText(),
fontSize = 36.sp,
fontSize = 28.sp,
fontWeight = FontWeight.Bold,
color = Brand500
)
Spacer(modifier = Modifier.height(4.dp))
Spacer(modifier = Modifier.height(2.dp))
val dateText = buildString {
append(mainHoliday.getDateText())
@@ -333,14 +333,14 @@ private fun HolidayCountdown() {
}
Text(
text = dateText,
fontSize = 14.sp,
fontSize = 13.sp,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
// Upcoming Holidays
// Upcoming Holidays - Horizontal Layout
if (upcomingHolidays.isNotEmpty()) {
Spacer(modifier = Modifier.height(20.dp))
Spacer(modifier = Modifier.height(16.dp))
Row(
modifier = Modifier.fillMaxWidth(),
@@ -349,25 +349,41 @@ private fun HolidayCountdown() {
) {
Text(
text = "接下来",
fontSize = 14.sp,
fontSize = 13.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
Text(
text = if (showAll) "收起" else "更多",
fontSize = 14.sp,
fontSize = 13.sp,
fontWeight = FontWeight.Medium,
color = Brand500,
modifier = Modifier.clickable { showAll = !showAll }
)
}
Spacer(modifier = Modifier.height(12.dp))
Spacer(modifier = Modifier.height(10.dp))
upcomingHolidays.forEach { holidayWithDays ->
UpcomingHolidayItem(holidayWithDays)
Spacer(modifier = Modifier.height(8.dp))
if (showAll) {
// Vertical list when expanded
upcomingHolidays.forEach { holidayWithDays ->
UpcomingHolidayItem(holidayWithDays)
Spacer(modifier = Modifier.height(8.dp))
}
} else {
// Horizontal layout for first 2 items
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(10.dp)
) {
upcomingHolidays.take(2).forEach { holidayWithDays ->
CompactHolidayItem(
holidayWithDays = holidayWithDays,
modifier = Modifier.weight(1f)
)
}
}
}
}
}
@@ -378,38 +394,72 @@ private fun UpcomingHolidayItem(holidayWithDays: HolidayWithDays) {
Row(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(12.dp))
.clip(RoundedCornerShape(10.dp))
.background(MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f))
.padding(horizontal = 16.dp, vertical = 12.dp),
.padding(horizontal = 12.dp, vertical = 10.dp),
verticalAlignment = Alignment.CenterVertically
) {
// Emoji
Text(
text = holidayWithDays.holiday.emoji,
fontSize = 24.sp
fontSize = 20.sp
)
Spacer(modifier = Modifier.width(12.dp))
Spacer(modifier = Modifier.width(10.dp))
// Name
Text(
text = holidayWithDays.holiday.name,
fontSize = 15.sp,
fontSize = 14.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.weight(1f)
)
// Days
Text(
text = holidayWithDays.getDaysText(),
fontSize = 15.sp,
fontSize = 14.sp,
fontWeight = FontWeight.Bold,
color = Brand500
)
}
}
@Composable
private fun CompactHolidayItem(
holidayWithDays: HolidayWithDays,
modifier: Modifier = Modifier
) {
Row(
modifier = modifier
.clip(RoundedCornerShape(10.dp))
.background(MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f))
.padding(horizontal = 10.dp, vertical = 10.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = holidayWithDays.holiday.emoji,
fontSize = 18.sp
)
Spacer(modifier = Modifier.width(6.dp))
Column(modifier = Modifier.weight(1f)) {
Text(
text = holidayWithDays.holiday.name,
fontSize = 13.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.onSurface,
maxLines = 1
)
Text(
text = holidayWithDays.getDaysText(),
fontSize = 13.sp,
fontWeight = FontWeight.Bold,
color = Brand500
)
}
}
}
@Composable
private fun StatColumn(count: Int, label: String) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {