mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-18 07:09:16 +00:00
fix(tv): Tab 条焦点环不再整块写死调色板,改为跟随主题
selector_mpv_tab_focus.xml 的焦点/按下两态整块写死调色板(#E8F0FE 填充 / #1A73E8 描边 / #D2E3FC 按下)+ 写死 2dp 宽度,不引用任何主题属性。4 个消费方(AdBlockStatsDialog、 PlaybackPerformanceDialog、UpdateSettingsDialog、dialog_mpv_config_manager)都是电视端 Tab 条,用户改主题的「焦点色」槽时它们纹丝不动。 **先确认它到底是不是漂移**:仓库里有个看起来一样但性质相反的文件 selector_ad_stats_item, 它也用 #1A73E8/#E8F0FE,但注释写明这是有依据的——宿主 shape_ad_stats_content 是固定浅色 #FAFBFC(两张表相同),夜间表的浅蓝环压在上面只有约 1.6:1。所以判据是**宿主面板是否固定 明暗**,不能因为「都是 Tab、都写死了色值」就一起改。 核对两个文件的宿主: - selector_ad_stats_item 的宿主固定浅色 → 环色必须与调色板无关 ✓ 现状正确,本批不动它; - selector_mpv_tab_focus 的 4 个宿主全部用 shape_shell_proxy_dialog = ?attr/colorSurfaceContainerHigh(随主题变)→ 环色也必须跟着变,现状是**错配**: 宿主变了、环没变。 实测(非文本 UI 门槛 3:1):写死 #1A73E8 在浅色面板 3.69:1、深色面板 3.00:1(刚好卡在 门槛上,无余量);改用 ?attr/tvFocusRing 后浅色 5.23:1、深色 12.63:1。 - 焦点/按下态填充改为 ?attr/colorSurfaceContainerHighest(与宿主同族、高一级表达强调); - 描边改为 @dimen/webhtv_focus_ring_width + ?attr/tvFocusRing; - 注释里写清判据、反例与两组实测值; - 新增 TvTabFocusRingPaletteContractTest 3 项,其中一项是**反例守卫**:固定浅色面板上的环色 不得改用主题属性——防止有人按「都是 Tab」把它们统一掉而让夜间环消失。 首轮测试失败,但**是我的断言写错了、文件本身是对的**:selector_ad_stats_item 里 ?attr/tvFocusRing 只出现在注释里(它故意提到该属性来说明为什么不能用它),而我的断言直接 扫全文,把解释当成了违规。这与本会话此前反复踩到的同一类错误一致,修法是断言前先剥掉 XML 注释。 验证:testLeanback 定向测试 BUILD SUCCESSFUL(修正断言后);leanback assemble BUILD SUCCESSFUL;真机 192.168.50.3:5561 在「设置 → 关于 → 检查更新」打开的「版本更新」 弹窗里确认 Tab 条焦点环为主题浅蓝、焦点态填充为主题面板色而非写死的 #E8F0FE 亮白,无崩溃。 未验证:另外三个消费方未逐一实机触发(引用同一 drawable,同构);未在浅色主题下实测。 详见 docs/TV-TAB-FOCUS-PALETTE-20261013.md §6.5。 环境限制:本会话无可用 bash,check_ui_tokens.sh 与 task_guard.sh 无法执行, 按同等意图手工暂存/提交/打 tag。
This commit is contained in:
parent
a32604614c
commit
7ac2d124f6
3 changed files with 236 additions and 3 deletions
Loading…
Add table
Add a link
Reference in a new issue