MujicaUI

Inputs · #030

RadioGroup 浅色主题渲染快照
浅色 · 渲染快照
RadioGroup 深色主题渲染快照
深色 · 渲染快照

030 RadioGroup 单选组

用途

在一组选项中选一个,横向或纵向排列;选项值是任意可比较类型,作为稳定标识。基于 ui.RadioGroup 与 ui.RadioBase,整组是一个 Tab 停靠点。

最小示例

items := []input.RadioItem[string]{{Value: "s", Label: "Small"}, {Value: "m", Label: "Medium"}, {Value: "l", Label: "Large"}}
if input.RadioGroup(c, &size, items, input.RadioGroupOptions{Label: "Size"}).Changed() {
	fmt.Println("size", size)
}

签名:func RadioGroup[T comparable](c *ui.Context, value *T, items []RadioItem[T], opts RadioGroupOptions) ChoiceResult

参数

RadioItem[T]

字段类型默认值含义
ValueT必填稳定选项值;重复时 panic。
Labelstring""标签,点击标签也会选择。
Disabledboolfalse单项禁用,方向键跳过。

RadioGroupOptions

字段类型默认值含义
Horizontalboolfalse横向排列。
Labelstring""组的无障碍名称。
Disabledboolfalse禁用整组。

value 为 nil 或 items 为空时 panic。*value 不在选项中时没有选中项。

状态

未选(空心圆)、悬停与按下(AccentText 边)、选中(酒红实心圆与象牙白圆点;悬停与按下时底色加深、边框变为正文色)、键盘聚焦、禁用。

事件

Changed():用户选择了另一个值(点击、Space 或方向键)。

键盘操作

Tab 进入组并落在已选项;Up/Down/Left/Right 移动并直接选择,循环,跳过禁用项;Home、End 选择首末可用项。

限制

  • 每个选项按 Value 相等性取得稳定键(首次出现的序号),选项重新排序后焦点仍跟随原来的值;组件记住见过的值,长期不断变化的选项集合会让这份记录增长。
  • 方向键对横向与纵向组都同时响应上下左右(MyGo RadioGroup 固定使用 Horizontal|Vertical)。