Container and Layouts
In the previous example we saw how to set a CanvasObject to the
content of a Canvas, but it is not very useful to only show
one visual element. To show more than one item we use the Container type.
As the fyne.Container is also a fyne.CanvasObject we can set it to be
the content of a fyne.Canvas. In this example we create 3 text objects
and then place them in a container using the NewContainer() function.
As there is no layout set we can move the elements around like you see
with text2.Move().
A fyne.Layout implements a method for organising items within a container.
By uncommenting the NewContainerWithLayout() line in this example you
alter the container to use a grid layout with 2 columns. Run this code
and try resizing the window to see how the layout automatically configures
the contents of the window. Notice also that the manual position
of text2 is ignored by the layout code.
To find out more jump to the Layout section of this tour.
Example Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
import (
"image/color"
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/canvas"
//"fyne.io/fyne/layout"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Container")
text1 := canvas.NewText("Hello", color.White)
text2 := canvas.NewText("There", color.White)
text2.Move(fyne.NewPos(20, 20))
text3 := canvas.NewText("World", color.White)
container := fyne.NewContainer(text1, text2, text3)
// container := fyne.NewContainerWithLayout(layout.NewGridLayout(2),
// text1, text2, text3)
myWindow.SetContent(container)
myWindow.ShowAndRun()
}