外观
Slider(滑块)
ui.Slider 创建一个滑块,在低值和高值之间设置一个 *float64:拖动滑钮, 或按下轨道,都会设置它;在它拥有键盘焦点时按方向键、Page Up 和 Page Down (范围的十分之一)、Home 和 End 也一样。Changed 上报新值。
go
ui.Slider(c, &app.volume, 0, 100).Label("Volume")步进
ui.StepSlider 把值吸附到低值以及从低值起的步长倍数上,每个位置有一个刻度, 就像 AppKit 带刻度的滑块:拖动时吸附到刻度,方向键按步移动。
go
ui.StepSlider(c, &app.quality, 0, 100, 25).Label("Quality")对于同时设置低值和高值,如价格区间,使用范围滑块;对于 精确数字,使用数字输入框或步进器。
无外观
ui.SliderBase 是一个没有外观的滑块:在其内容框上拖动(在其内边距之内) 设置值。根据 (value-lo)/(hi-lo) 所在的位置绘制它的轨道和滑钮,并在两侧 留出滑钮宽度一半的内边距,使滑钮保持在内部。从右到左 时,低值在右侧,正如 Slider 绘制的那样,方向键按其指向移动滑钮:当 c.Direction() 为 ui.RightToLeft 时,将其镜像绘制:
go
s := ui.SliderBase(c, &app.volume, 0, 100).Height(24).PaddingX(12)
at := float32(app.volume / 100)
if c.Direction() == ui.RightToLeft {
at = 1 - at
}
s.Draw(func(p *ui.Painter, r ui.Rect) {
x := r.X + 12 + (r.W-24)*at
p.Fill(ui.Rect{X: r.X + 12, Y: r.Y + 10, W: r.W - 24, H: 4}, gray, 2)
p.Fill(ui.Rect{X: x - 12, Y: r.Y, W: 24, H: 24}, blue, 12)
})Step 把它的值吸附到低值和步长的倍数,方向键在这些位置之间移动,而不是按 范围的百分之一移动;Vertical 使它向上,低值在其内容框的底部;此时在上下 留出滑钮高度一半的内边距:
go
ui.SliderBase(c, &app.level, 0, 10).Step(1).Vertical().Size(24, 120).PaddingY(12).Draw(drawLevel)参见自定义控件。
无障碍
辅助技术看到的是一个具有其范围和值的滑块,由其 Label 命名,水平或垂直, 它可以像方向键一样增加和减少值。