V1.3.7: 调音弹窗文字自适应 —— 修"文字显示不全"
问题: 上一版按分辨率压缩时把「文字行」也一起压扁了。label() 自带 6dp 上下内边距, 行高必须 >= 文本行高+12dp, 而紧凑模式给了 18dp(频段刻度)/28dp(音量标题)/42dp(标题), sp 文本(尤其系统字体放大时)直接被裁掉 —— 这就是"文字显示不全"的根因。 修复: 改成「文字行 wrap_content + 只有无文字区域才用计算高度」 - 标题行/标题文字、音量标题、EQ 开关、预设行与预设按钮、频段数值与频率刻度 全部改为 wrap_content, 高度由文本自身决定, 任何字体缩放下都不会被裁。 - 频段刻度新增 caption(): 无内边距 + includeFontPadding=false, 12sp 完整显示。 - 预设按钮改 includeFontPadding=false + 等距 padding, 不再被固定 46dp 压扁。 - 滑杆用自身固有高度(-2), SeekBar 无文字不会被裁。 - 两遍 fit: afterShow 里先 panel.measure() 实测内容高度, 若超出「屏幕高*0.92 - 框架」 就把 EQ 频段区减掉(下限 dp(96)), 再调 fitDialogToScreen 收敛窗口 —— 收缩的永远是频段区而不是文字; 仍放不下才滚动。 新增 tuning dialog shrink band 日志便于现场核对。 版本号 1.3.6 -> 1.3.7(versionCode 12 -> 13)。按约定本次不发布 Release, 仅本地打包测试。
This commit is contained in:
@@ -108,7 +108,7 @@ $BT/apksigner verify 目标名.apk
|
||||
|
||||
### 版本号
|
||||
|
||||
- `app/build.gradle`:`versionName "1.3.6"` / `versionCode 12`
|
||||
- `app/build.gradle`:`versionName "1.3.7"` / `versionCode 13`
|
||||
- App 内显示统一用纯版本号(不加 `(versionCode)` 括号)
|
||||
|
||||
## 三、关键实现约束(避免踩坑)
|
||||
@@ -185,5 +185,10 @@ $BT/apksigner verify 目标名.apk
|
||||
ScrollView 限制为 `屏幕高*0.92 - 弹窗标题/按钮框架(chromeDp)` —— **不要再用 `WRAP_CONTENT` 作为
|
||||
弹窗高度**。内容高度由「屏幕预算 - 固定区高度」反推(调音弹窗的 EQ 频段区就是这样自适应),
|
||||
预算不足时弹窗内滚动而不是被裁掉。已应用:调音弹窗、扫码点歌弹窗、声音设置弹窗。
|
||||
新增/改动弹窗时请复用该 helper,别再写死 `setLayout(w, WRAP_CONTENT)`
|
||||
新增/改动弹窗时请复用该 helper,别再写死 `setLayout(w, WRAP_CONTENT)`。
|
||||
⚠️ **文字行必须 wrap_content**:`label()` 自带 6dp 上下内边距,固定矮行(曾用 18/28/42dp)
|
||||
会把文字裁掉 —— 这是"文字显示不全"的根因。做法是「文字行 wrap_content + 只有无文字区域
|
||||
才用计算高度」:调音弹窗里唯一可伸缩的是 EQ 频段区,采用**两遍 fit**(先 `panel.measure()`
|
||||
实测内容高度,超出预算就把频段区减掉,再调 `fitDialogToScreen`),这样收缩的永远是频段区
|
||||
而不是文字;频段区下限 dp(96),再放不下才滚动。大字体(系统字体缩放)同理自动兜住
|
||||
- **仓库可见性**:Gitea 仓库保持 **public**(若后续把 App 更新/热更新端点迁到 Gitea,非 public 会导致 403)
|
||||
|
||||
Reference in New Issue
Block a user