Skip to content
On this page

Box 盒子模型

如容器中所讨论的,容器中的布局元素可以使用布局进行排列。本节探讨内置布局以及如何使用它们。

最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。方框布局将所有元素排列在一行或一列中,并带有可选的空格以帮助对齐。

用layout创建的水平框布局。NewHBoxLayout()创建单行中项目的排列。框中的每个项目都将其宽度设置为其MinSize()。所有项目的宽度和高度都将相等,这是所有MinSize().height值中的最大值。布局可以在容器中使用,也可以使用box小部件。NewHBox()。

垂直框布局类似,但它在列中排列项目。每个项目的高度将设置为最小值,所有宽度将相等,设置为最小宽度中的最大值。

要在元素之间创建扩展空间(例如,使一些元素左对齐,另一些元素右对齐),请添加layout.NewSpacer()作为其中一项。间隔件将展开以填充所有可用空间。在垂直框布局的开头添加间隔符将导致所有项目底部对齐。您可以在水平排列的起点和终点添加一个,以创建中心对齐。

go
package main

import (
	"image/color"

	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/canvas"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/layout"
)

func main() {
	myApp := app.New()
	myWindow := myApp.NewWindow("Box Layout")

	text1 := canvas.NewText("Hello", color.White)
	text2 := canvas.NewText("There", color.White)
	text3 := canvas.NewText("(right)", color.White)
	content := container.New(layout.NewHBoxLayout(), text1, text2, layout.NewSpacer(), text3)

	text4 := canvas.NewText("centered", color.White)
	centered := container.New(layout.NewHBoxLayout(), layout.NewSpacer(), text4, layout.NewSpacer())
	myWindow.SetContent(container.New(layout.NewVBoxLayout(), content, centered))
	myWindow.ShowAndRun()
}