MujicaUI

Display · #018

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

018 Tag 标签

用途

短标签,可带图标。可以点击,也可以关闭,点击标签和关闭标签是两个独立的操作,各有自己的焦点停靠点。

最小示例

tags := []string{"Baroque", "Gothic"}
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	ui.Row(c).Gap(8).Children(func() {
		for i, t := range tags {
			var v display.TagView
			ui.Box(c).Key(t).Children(func() {
				v = display.Tag(c, t, display.TagOptions{Icon: "star", Clickable: true, Closable: true})
			})
			if v.Closed {
				tags = append(tags[:i:i], tags[i+1:]...)
			}
		}
	})
}

参数

func Tag(c *ui.Context, label string, opts TagOptions) TagView

label 必填,空字符串 panic。

字段类型默认值含义
Iconstring""图标名称,见 Icon 组件。
Clickableboolfalse标签文字部分作为按钮,可以聚焦和点击。
Closableboolfalse显示 28×28 DIP 的关闭按钮。
Disabledboolfalse禁用点击和关闭,并移出 Tab 顺序。

返回值 TagView:Element;Clicked 表示标签被激活;Closed 表示请求关闭。

状态

  • 默认:Surface 底色、细边框、2 DIP 圆角。
  • 悬停 / 按下:可点击部分和关闭按钮分别变为 SurfaceHover / Selection。
  • 聚焦:对应部分显示 2 DIP 焦点环。
  • 禁用:由 MyGo 统一调暗,不响应输入;祖先元素禁用时同样不响应,包括 Delete/Backspace。
  • 文字随系统文本缩放放大。

事件

  • TagView.Clicked:点击标签文字,或在聚焦时按 Enter/Space。点击关闭按钮不会触发它。
  • TagView.Closed:点击关闭按钮,或在关闭按钮上按 Enter/Space,或在聚焦的可点击标签上按 Delete/Backspace。组件不会自行移除标签,由调用方删除数据。

键盘操作

按键作用
Tab先聚焦标签文字(仅 Clickable),再聚焦关闭按钮
Enter / Space激活当前聚焦的部分
Delete / Backspace在可点击标签上请求关闭(仅 Closable)

限制

  • 在循环中渲染多个标签时,把稳定的 Key 放在包住 Tag 的外层容器上(见示例)。Tag 在创建时就处理输入,事后再设置 Key 无法保持身份。
  • 不可点击的标签不获取焦点,只能通过关闭按钮操作。
  • 标签不提供“选中”状态;需要可选标签时请使用 Toggle 类组件。