fix: 首页三件套字号 30sp 改 26sp,label 含单位避免窄格里换行
第一版 value 行 + 单位同行 + 30sp 字号在窄格里换行成两截:「8,426」一行 + 「步」一行,「327」+「千」+「卡」也各换一行,「47」+「分钟」同样问题 —— 整张图被切成 6 段,视觉上不像三件套、像六个数。 改法:label 含单位(卡路里(千卡)、活动(分钟)),value 行只摆数字,字号降到 26sp —— 三件套格子约 110dp 宽,26sp + 5 位数字 100,000 装得下,再留余量给目标那行小字。 KDoc 注释一并更新,标注 M1 验证阶段肉眼发现的坑。
This commit is contained in:
@@ -232,8 +232,10 @@ private fun DeviceStrip(device: RingDeviceState?, modifier: Modifier = Modifier)
|
||||
* - 步数下挂目标("目标 10,000"),目标本身仍是用户对照自己的尺子
|
||||
* - 步数一格整格可点进详情;卡路里/活动时长一格整格也点了能进(暂未挂路由,行为同环外区域)
|
||||
*
|
||||
* 数值字号比详情页的 `MetricValueStyle`(44sp)小一档 —— 三件套横向排成一行,
|
||||
* 同样的 44sp 会让六位步数("100,000")撑爆格子;30sp 仍属「一眼能读」但不至于抢走下方指标卡的视觉重量。
|
||||
* **第一版的「value + 单位同行」写法装不下**:30sp 字号下「8,426 步」「327 千卡」「47 分钟」
|
||||
* 三件套单元格里都会换行 —— 视觉上「8,426」「步」分两行变成「数值」「单位」两截,反而像丢了内容。
|
||||
* 改为「label 表达单位 + value 纯数字」:label 写成「步数 / 卡路里(千卡)/ 活动(分钟)」,
|
||||
* 把单位塞进 label,value 行只摆数字。
|
||||
*/
|
||||
@Composable
|
||||
private fun TodaySummaryCard(summary: HealthSummary, onOpenSteps: () -> Unit, modifier: Modifier = Modifier) {
|
||||
@@ -242,7 +244,7 @@ private fun TodaySummaryCard(summary: HealthSummary, onOpenSteps: () -> Unit, mo
|
||||
SummaryCell(
|
||||
modifier = Modifier.weight(1f),
|
||||
label = stringResource(R.string.home_summary_steps_label),
|
||||
value = stringResource(R.string.home_summary_steps_value, formatSteps(summary.steps)),
|
||||
value = formatSteps(summary.steps),
|
||||
subline = stringResource(R.string.home_summary_steps_goal, formatSteps(summary.stepGoal)),
|
||||
onClick = onOpenSteps,
|
||||
)
|
||||
@@ -250,7 +252,7 @@ private fun TodaySummaryCard(summary: HealthSummary, onOpenSteps: () -> Unit, mo
|
||||
SummaryCell(
|
||||
modifier = Modifier.weight(1f),
|
||||
label = stringResource(R.string.home_summary_calories_label),
|
||||
value = stringResource(R.string.home_summary_calories_value, formatCalories(summary.calories)),
|
||||
value = formatCalories(summary.calories),
|
||||
subline = null,
|
||||
onClick = null,
|
||||
)
|
||||
@@ -258,7 +260,7 @@ private fun TodaySummaryCard(summary: HealthSummary, onOpenSteps: () -> Unit, mo
|
||||
SummaryCell(
|
||||
modifier = Modifier.weight(1f),
|
||||
label = stringResource(R.string.home_summary_active_label),
|
||||
value = stringResource(R.string.home_summary_active_value, summary.activeMinutes),
|
||||
value = formatActiveMinutes(summary.activeMinutes),
|
||||
subline = null,
|
||||
onClick = null,
|
||||
)
|
||||
@@ -287,7 +289,7 @@ private fun RowScope.SummaryDivider() {
|
||||
private val HomeSummaryDivider = androidx.compose.ui.graphics.Color(0xFFE2E5EB)
|
||||
|
||||
/**
|
||||
* 三件套的单格:上标签、下大数字 + 单位、再下一行小字(步数那一格用,挂目标)。
|
||||
* 三件套的单格:上标签(含单位)、下大数字、再下一行小字(步数那一格用,挂目标)。
|
||||
*
|
||||
* `onClick` 为 null 时整格不响应点击(卡路里/活动时长暂未挂详情路由);
|
||||
* 不为 null 时整格可点(步数一格进步数详情)。
|
||||
@@ -315,9 +317,9 @@ private fun SummaryCell(
|
||||
}
|
||||
}
|
||||
|
||||
/** 三件套单格内的数值字号:30sp + tnum,宽字符数字不会跳。 */
|
||||
/** 三件套单格内的数值字号:26sp + tnum;30sp 在三等分格里换行(首版踩过这个坑)。 */
|
||||
private val TodaySummaryValueStyle = TextStyle(
|
||||
fontSize = 30.sp,
|
||||
fontSize = 26.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
letterSpacing = (-1).sp,
|
||||
color = TextPrimary,
|
||||
|
||||
@@ -165,12 +165,9 @@
|
||||
<!-- 首页:三件套横排(替代原「步数大环 + 距离/千卡」结构)。 -->
|
||||
<string name="home_today_summary">今日数据</string>
|
||||
<string name="home_summary_steps_label">步数</string>
|
||||
<string name="home_summary_steps_value">%1$s 步</string>
|
||||
<string name="home_summary_steps_goal">目标 %1$s</string>
|
||||
<string name="home_summary_calories_label">卡路里</string>
|
||||
<string name="home_summary_calories_value">%1$s 千卡</string>
|
||||
<string name="home_summary_active_label">活动时长</string>
|
||||
<string name="home_summary_active_value">%1$d 分钟</string>
|
||||
<string name="home_summary_calories_label">卡路里(千卡)</string>
|
||||
<string name="home_summary_active_label">活动(分钟)</string>
|
||||
|
||||
<!-- 运动:六类运动类型网格。 -->
|
||||
<string name="workout_sport_running_outdoor">户外跑步</string>
|
||||
|
||||
Reference in New Issue
Block a user