100 LoadingOverlay 加载遮罩
用途
在一个容器范围内显示加载遮罩:被覆盖的内容不接收指针、按键和焦点,防止重复操作;窗口其余部分照常可用。显示说明文字与可选取消操作。
最小示例
r := feedback.LoadingOverlay(c, loading, feedback.LoadingOverlayOptions{Cancel: "Cancel"}, func() {
ui.Text(c, "Quarterly report")
input.Button(c, "Export", input.ButtonOptions{})
})
if r.Canceled {
loading = false
}签名:func LoadingOverlay(c *ui.Context, loading bool, opts LoadingOverlayOptions, content func()) LoadingOverlayResult
参数
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
loading | bool | 必填 | 是否覆盖。 |
content | func() | 必填 | 构建被覆盖的内容;nil 时 panic。 |
Label | string | 内置“Loading… / 正在加载…” | 说明文字。 |
Cancel | string | "" | 取消按钮文字;为空时不显示。 |
返回 LoadingOverlayResult{Element, Canceled}。Element 即遮罩所覆盖的范围,可在其上设置宽高。
状态
- 加载时内容经 MyGo
Disabled阻止输入(MyGo 统一减淡),上方为半透明背景与居中面板。 - 开始加载时播报说明;焦点原在内容内时移到取消按钮(无取消时移到可聚焦的说明面板),焦点不会离开该区域。
- 遮罩淡入淡出,减少动画时直接切换。
事件
Canceled:点击取消,或焦点在面板内时按 Escape。
键盘操作
Tab 到达取消按钮;Enter、Space 或 Escape 取消。被覆盖的控件不进入 Tab 序列。
限制
- 只遮盖容器自身范围;整窗阻塞请使用模态对话框。

