0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-18 07:09:16 +00:00

fix(tv): 空态补齐标题/解释/主动作并修掉删空后一片空白,加载指示器改走语义色

设计文档 §9.9 要求空态是「标题 + 解释 + 一个主动作」并明确「不能只显示一句暂无数据」,
§6.2 又把空态列入 Display 档(电视 40-48sp)。而 leanback 的 view_empty.xml 只有一个
16sp 的单行文案,三条都不满足;view_progress.xml 的指示器还写死 @color/white,
与同屏其它状态元素用的 ?attr/webhtvColorOnWallpaper 是两份声明。

真机验证时又发现一个更硬的缺陷:KeepActivity.onItemDelete 删掉最后一条后只退出删除
模式、从不驱动状态机,用户看到的是**一片空白**而不是空态(同仓库的 HistoryActivity
本来就写对了)。已按同一写法修掉并加契约测试钉住。

- view_empty.xml:标题 16sp -> 40sp(Display 档),新增 description 与 action 两个槽位,
  均默认 GONE,未接入的宿主渲染与改动前一致;
- 新增 shape_empty_action_focused / selector_empty_action:焦点环取**应用表面族**的
  ?attr/tvFocusRing 而不是现成 selector_button 用的 ?attr/tvPlayerRing(后者是固定深玻璃族,
  用错会重现阶段 M 修过的同一屏两种环色);
- ProgressLayout.setEmptyContent(...):参数先存、视图创建时应用;内部用 findViewById +
  空值守卫而不是 ViewEmptyBinding 字段(view_empty 是分 flavor 的,mobile 版没有这两个
  控件,而本类在 main 源集,直接引用字段会让手机端编译失败);
- KeepActivity:接入三件套(还没有收藏 / 在任意详情页按收藏… / 去点播),动作真实回首页;
- KeepActivity.onItemDelete:删除回调补 showContent(true, count),与 HistoryActivity 对齐;
- view_progress.xml:indicatorColor 由 @color/white 改为 ?attr/webhtvColorOnWallpaper;
- 手机版 view_empty.xml 只补两个默认隐藏的槽位(编译必需,渲染可证明不变)。

验证:leanback 定向测试 BUILD SUCCESSFUL(含新增 TvStateSurfaceContractTest 8 项);
手机端编译与 theme 测试 BUILD SUCCESSFUL;真机 192.168.50.3:5561 上删空收藏后空态
正确渲染,标题/解释层级分明,按钮自动获焦且焦点环清晰,按确认键确实回到首页。

环境限制:本会话无可用 bash,check_ui_tokens.sh 与 task_guard.sh 无法执行,
按同等意图手工暂存/提交/打 tag;详见 docs/TV-EMPTY-LOADING-STATE-20261012.md。
This commit is contained in:
Silent1566 2026-10-12 23:25:33 +08:00
commit 61483311b4
12 changed files with 580 additions and 4 deletions