Skip to content
On this page

容器和布局

在上一个示例中,我们看到了如何将CanvasObject设置为画布的内容,但仅显示一个视觉元素并不是很有用。要显示多个项目,我们使用容器类型。

由于fyne.Container也是一个fyne.CanvasObject,我们可以将其设置为fyne.can vas的内容。在本例中,我们创建了3个文本对象,然后使用Container.NewWithoutLayout()函数将它们放置在容器中。由于没有布局集,我们可以像text2.move()那样四处移动元素。

go
package main

import (
	"image/color"

	"fyne.io/fyne/v2"
	"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("Container")
	green := color.NRGBA{R: 0, G: 180, B: 0, A: 255}

	text1 := canvas.NewText("Hello", green)
	text2 := canvas.NewText("There", green)
	text2.Move(fyne.NewPos(20, 20))
	content := container.NewWithoutLayout(text1, text2)
	// content := container.New(layout.NewGridLayout(2), text1, text2)

	myWindow.SetContent(content)
	myWindow.ShowAndRun()
}

fyne.Layout实现了一种在容器中组织项目的方法。在本例中,通过取消注释container.New()行,可以将容器更改为使用具有2列的网格布局。运行此代码并尝试调整窗口大小,以查看布局如何自动配置窗口内容。还要注意,布局代码忽略了text2的手动位置。

更多请切换到布局列表