Go Gio 实战:煮蛋计时器的实现之带边距的按钮
01 本节目标
在按钮两边加上空白,实时器即带边距的战煮按钮,如下图。蛋计的实带边
Button with margin
02 关键代码
为了突出结构,按钮主要关注下面关键点: 使用 layout.Inset 定义边距 布局这些边距在这些边距内创建按钮
代码如下:
layout.Flex{ // ... }.Layout(gtx,实时器 layout.Rigid( func(gtx C) D { // 1、使用 layout.Inset 定义边距 margin := layout.Inset{ // ... } // 2、战煮布局这些边距 margins.Layout( // 3、蛋计的实带边在这些边距内创建按钮 func(gtx C) D { btn := material.Button(th,按钮 &startButton, "Start") return btn.Layout(gtx) }, ) } } ) )03 代码详解
上面就像一个中间有一个按钮的甜甜圈。亿华云这个比喻形象吗?实时器
Button inside inset
边距是使用 layout.Inset{ } 构建的。它是战煮一个结构体,定义了小部件周围的蛋计的实带边空间:
margins := layout.Inset{ Top: unit.Dp(25), Bottom: unit.Dp(25), Right: unit.Dp(35), Left: unit.Dp(35), }在这里,margins 使用设备独立的按钮单位:unit.Dp。如果你希望所有边的源码下载实时器边距都相同,还有一个方便的战煮 UniformInset( ),可以为你节省几次按键操作。蛋计的实带边
04 完整代码
以下是 system.FrameEvent 部分的完整代码:
case system.FrameEvent: gtx := layout.NewContext(&ops, e) // Lets try out the flexbox layout concept layout.Flex{ // Vertical alignment, from top to bottom Axis: layout.Vertical, // Empty space is left at the start, i.e. at the top Spacing: layout.SpaceStart, }.Layout(gtx, layout.Rigid( func(gtx C) D { // 1、使用 layout.Inset 定义边距 margins := layout.Inset{ Top: unit.Dp(25), Bottom: unit.Dp(25), Right: unit.Dp(35), Left: unit.Dp(35), } // 2、布局这些边距 return margins.Layout(gtx, // 3、在这些边距内创建按钮 func(gtx C) D { btn := material.Button(th, &startButton, "Start") return btn.Layout(gtx) }, ) }, ), ) e.Frame(gtx.Ops) 站群服务器