MujicaUI

Essentials · #497

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

497 ResizablePanelGroup 可调面板组

用途

多个面板以分隔条相连,拖动或键盘调整尺寸;可折叠面板拖到最小值一半以下即折叠。尺寸以比例保存在调用方的切片中。

最小示例

var sizes []float32
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	r := input.ResizablePanelGroup(c, &sizes, []input.ResizablePanel{
		{Label: "Files", Collapsible: true, Build: func() { ui.Text(c, "Files") }},
		{Label: "Editor", Build: func() { ui.Text(c, "Editor") }},
	}, input.ResizablePanelGroupOptions{})
	if r.Committed {
		// save sizes
	}
}

签名:func ResizablePanelGroup(c *ui.Context, sizes *[]float32, panels []ResizablePanel, opts ResizablePanelGroupOptions) ResizablePanelGroupResult

参数

字段类型默认值含义
sizes*[]float32空则平分各面板比例,和为 1,否则 panic;0 只允许可折叠面板。
panels[]ResizablePanel必填Label、Min(默认 10 个间距单位)、Collapsible、Build;至少两个。
Verticalboolfalse上下排列。
Disabledboolfalse不可调整。

状态

分隔条悬停或拖动时变为强调色;折叠后分隔条报告“已折叠”。

事件

Resized:拖动中尺寸变化;Committed:一次调整完成(松开、按键、折叠),用于保存。

键盘操作

Tab 聚焦分隔条;方向键每次 4 个间距单位;Home/End 到最小与最大;Enter 折叠或恢复相邻的可折叠面板。

限制

无。