# 渲染问题

> 屏幕未反映代码 —— 按需渲染、alpha、布局失效、GPU 性能弱。

Source: https://crossfly.dev/zh/docs/troubleshooting/render — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# 渲染问题

屏幕没有反映代码所做的更改。格式：**症状 → 原因 → 修复**。

## "我改了一个值，屏幕却不更新"
**原因：** 渲染是**按需**的——CrossFly 只在被请求时才重绘。
**修复：** 调用 `Component.repaint()`；如果你"在外部"改变了尺寸/位置，还要调用 `setValidLayout(false)`（框架的大多数 setter 已经会这样做；而你手动改动的部分不会）。（第 4 章 §4.6）

## 设置的颜色消失 / 组件变得不可见
**原因：** 颜色是 `int` 类型的 ARGB `0xAARRGGBB`，而你用了 `0xRRGGBB`（alpha 为 0）。
**修复：** 加上 `0xFF…` 前缀。
```java
// 0x2196F3  → 不可见（alpha 00）
// 0xFF2196F3 → 不透明蓝色
```
（第 11 章 —— 颜色）

## 更换子组件后布局不重新计算
**原因：** 忘记使布局失效。
**修复：** `container.setValidLayout(false);` + `Component.repaint();`。

## UI 在旧设备上卡顿 / 出现锯齿
**原因：** GPU 性能弱。
**修复：** 检查 **`Screen.slowGPU`**，在这种情况下减少阴影/渐变/玻璃效果。
（第 8 章 —— Rendering）

## 主题切换了，但旧组件没有跟着变
**原因：** 样式缓存会按 `styleVersion` 重新解析（`PalColor` 颜色会在下一帧重新解析）——通常在 `setColorScheme`/`setDarkMode` 时自动完成。
**修复：** 如果某些内容没有跟上，就对窗口强制调用 `restyle()` 或调用 `Component.repaint()`。
（[明/暗模式](/docs/ui/theming/dark-mode)）

## 另请参阅
- [运行时错误](/docs/troubleshooting/runtime) · 概念：[渲染管线](/docs/concepts/rendering-pipeline)
