fix(selection): Checkbox / Radio 命中区恒 48×48(复审 P2-2)

- 无标签时行宽只有状态层的 40dp(A1 的 minimumInteractiveComponentSize 是 48)
- ControlGeometry::hit_padding() = (48−40)/2 = 4,view 侧左右各留这段透明内边距
- 单测钉住 40 + 2×4 == 48(checkbox 与 radio 各一遍)
This commit is contained in:
AskaEth committed 2026-11-02 06:55:31 +08:00
1 parent c5765c57e7
commit 0c9d4049b3
3 files changed
+28 -5

No files matched your search

@@ -96,6 +96,15 @@ impl ControlGeometry {
}
}
/// 命中区比可见状态层宽出来的部分(左右**各一份**):`(48 − 40) / 2 = 4`。
///
/// 无标签时行宽只有状态层的 40dp,命中区就少 8dp;A1 的
/// `minimumInteractiveComponentSize` 是 **48**,所以 view 侧左右各留这段透明内边距
/// (复审 P2-2)。有标签时行宽本来 ≥48,这段内边距不改变结论,只是保持两处口径一致。
pub fn hit_padding(&self) -> f32 {
(self.hit - self.state_layer) / 2.0
}
/// 勾形横向端点跨度(20 画布内 0.2→0.8):`[源]` `Checkbox.kt:496-514` 的路径比例。
///
/// 这是 research/15 §25 明确允许的「组件级常量」(路径比例 0.2/0.4/0.5/0.7/0.8 不进令牌层)。