Grid
Grid layout puts all child containers in an even grid, wrapping each row based on the number of columns.
Layout options
Columns
Responsible for wrapping cells beyond a given number.
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(1),
7 )),
8)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(2),
7 )),
8)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(3),
7 )),
8)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(4),
7 )),
8)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 )),
8)
Stretch
Responsible for choosing cell coordinates across each axis that will evenly occupy the remaining space.
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{true, true, true, true, true},
9 []bool{true, true, true, true, true},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{true, true, true, true, true},
9 []bool{false, false, true, false, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, true, false, false},
9 []bool{true, true, true, true, true},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{true, false, false, false, false},
9 []bool{true, false, false, false, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, true, false, false},
9 []bool{false, false, true, false, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, false, false, true},
9 []bool{false, false, false, false, true},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, true, true, true, false},
9 []bool{false, false, true, false, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, true, false, false},
9 []bool{false, true, true, true, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, true, true, true, false},
9 []bool{false, true, true, true, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{true, true, true, true, true},
9 []bool{false, false, false, false, false},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, false, false, false},
9 []bool{true, true, true, true, true},
10 ),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.Stretch(
8 []bool{false, false, false, false, false},
9 []bool{false, false, false, false, false},
10 ),
11 )),
12)
Default stretch
Responsible for selecting all cells along each axis. Can be used instead of the previous option to avoid listing all cells. It can also be overridden by a regular property.
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 )),
9)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, false),
8 )),
9)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(false, true),
8 )),
9)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(false, false),
8 )),
9)
Padding
Responsible for the offset of the parent container.
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Padding(widget.Insets{
9 Left: 50,
10 }),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Padding(widget.Insets{
9 Right: 50,
10 }),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Padding(widget.Insets{
9 Top: 50,
10 }),
11 )),
12)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Padding(widget.Insets{
9 Bottom: 50,
10 }),
11 )),
12)
Spacing
Responsible for the offset between child elements.
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Spacing(0, 0),
9 )),
10)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Spacing(0, 25),
9 )),
10)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Spacing(25, 0),
9 )),
10)
1root := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colornames.Gainsboro),
4 ),
5 widget.ContainerOpts.Layout(widget.NewGridLayout(
6 widget.GridLayoutOpts.Columns(5),
7 widget.GridLayoutOpts.DefaultStretch(true, true),
8 widget.GridLayoutOpts.Spacing(25, 25),
9 )),
10)
Layout data
Max size
Responsible for the allowable size of the child containers.
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{}),
7 widget.WidgetOpts.MinSize(64, 64),
8 ),
9 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
10)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 }),
9 widget.WidgetOpts.MinSize(64, 64),
10 ),
11 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
12)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxHeight: 32,
8 }),
9 widget.WidgetOpts.MinSize(64, 64),
10 ),
11 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
12)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 }),
10 widget.WidgetOpts.MinSize(64, 64),
11 ),
12 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
13)
Position
Responsible for the allowable size of the child containers. It works when the size of the cells is so limited by the maximum size that it is smaller than the size of the stretched cells that there is free space between them.
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionStart,
10 VerticalPosition: widget.GridLayoutPositionStart,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionCenter,
10 VerticalPosition: widget.GridLayoutPositionStart,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionEnd,
10 VerticalPosition: widget.GridLayoutPositionStart,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionStart,
10 VerticalPosition: widget.GridLayoutPositionCenter,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionCenter,
10 VerticalPosition: widget.GridLayoutPositionCenter,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionEnd,
10 VerticalPosition: widget.GridLayoutPositionCenter,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionStart,
10 VerticalPosition: widget.GridLayoutPositionEnd,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionCenter,
10 VerticalPosition: widget.GridLayoutPositionEnd,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)
1child := widget.NewContainer(
2 widget.ContainerOpts.BackgroundImage(
3 image.NewNineSliceColor(colors[(x+y)%len(colors)]),
4 ),
5 widget.ContainerOpts.WidgetOpts(
6 widget.WidgetOpts.LayoutData(widget.GridLayoutData{
7 MaxWidth: 32,
8 MaxHeight: 32,
9 HorizontalPosition: widget.GridLayoutPositionEnd,
10 VerticalPosition: widget.GridLayoutPositionEnd,
11 }),
12 widget.WidgetOpts.MinSize(64, 64),
13 ),
14 widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
15)