--- name: ui-devsimple-viewtheme description: >- 为布局 XML 中的控件默认补全 DevSimple(lib/DevSimple)的 ViewTheme 样式引用: 按控件继承链匹配 ViewTheme.<类名>,ImageView/AppCompatImageView 使用 ViewTheme.ImageView.FIT_XY,无匹配则用 ViewTheme.View。工作区内优先 Read lib/DevSimple;根样式清单见同目录 references/reference.md。在编写或批量整理 layout XML、 引入 ViewTheme、迁移旧布局、或用户提到 DevSimple/ViewTheme 时使用。 --- # DevSimple 布局 XML 默认 ViewTheme 样式 ## 模块路径(本地优先) | 符号 | 当前值 | |------|--------| | `DEVSIMPLE_ROOT` | `lib/DevSimple` | | `DEVSIMPLE_VALUES` | `{DEVSIMPLE_ROOT}/src/main/res/values` | 存在 `{DEVSIMPLE_ROOT}` 时 **Read 本地 XML**,勿用 WebFetch 代替。根样式全表、继承链、资源文件索引与 grep 维护步骤 → [references/reference.md](references/reference.md)。 ## 何时应用 - 新建或编辑 `res/layout/**/*.xml` 中的控件,需要统一默认宽高与主题习惯时。 - 用户要求为 View 补上 DevSimple / `ViewTheme` 的 `style` 时。 ## 前置假设 - 模块已依赖 DevSimple,R 中可解析 `@style/ViewTheme.*`。 - 样式名是否存在:以 [references/reference.md §根样式表](references/reference.md#根样式表控件向可直接作默认-style) 为准;若存疑或久未同步,在 `{DEVSIMPLE_VALUES}` **grep** `name="ViewTheme.` 后更新 reference(见 reference §扫描与更新)。 ## 核心规则(按顺序执行) 1. **已有 `style`/`android:theme`**:不要覆盖用户显式配置;除非用户明确要求替换。 2. **解析控件「语义类名」**: - XML 为完整类名时取**简单类名**(如 `RecyclerView`)。 - AppCompat / Material:沿继承向平台 Widget 回退,取**第一个在 reference 根样式表中出现的简单类名**。 例:`AppCompatEditText` → `EditText`;`MaterialButton` → `Button`。 3. **ImageView 特例**:`ImageView` / `AppCompatImageView` 一律 `style="@style/ViewTheme.ImageView.FIT_XY"`(不用 `ViewTheme.ImageView` 作默认)。 4. **匹配根样式**:若 reference 根样式表存在 `ViewTheme.<语义类名>`,则 `style="@style/ViewTheme.<语义类名>"`(ImageView 已按上一步处理)。 5. **ViewPager2**:无 `ViewTheme.ViewPager2`;使用 `style="@style/ViewTheme.ViewPager"`。 6. **无匹配**:`style="@style/ViewTheme.View"`。 7. **写法**:`style` 放在标签属性前列(与项目现有 XML 风格一致)。 继承链与常见标签对照 → [references/reference.md §继承链速查](references/reference.md#继承链速查xml-标签--语义类名)。需要 Match / Gravity / 子样式时 → [references/reference.md §子样式命名规律](references/reference.md#子样式命名规律按需拼接)。 ## 示例 ```xml ``` 无库内主题的控件: ```xml ``` ## 执行清单 - [ ] 已 Read [references/reference.md](references/reference.md) 根样式表(或已 grep `{DEVSIMPLE_VALUES}` 核对)。 - [ ] 未覆盖用户已有 `style`(除非明确要求)。 - [ ] ImageView / ViewPager2 特例已套用。 - [ ] DevSimple 有新增 `ViewTheme` 时,按 reference §扫描与更新 同步 reference,勿只改 SKILL。