Fyne 系列 09:主题、图标与资源打包
cbowen

Fyne 默认提供深色、浅色主题和一组内置图标。桌面工具不一定需要复杂设计,但至少应该有统一的主题、图标和资源管理方式。

使用内置图标

1
2
3
4
5
6
toolbar := widget.NewToolbar(
widget.NewToolbarAction(theme.DocumentCreateIcon(), func() {}),
widget.NewToolbarAction(theme.FolderOpenIcon(), func() {}),
widget.NewToolbarSeparator(),
widget.NewToolbarAction(theme.SettingsIcon(), func() {}),
)

内置图标会自动适配主题颜色,比直接塞一张固定颜色图片更省心。

设置主题

1
2
a := app.New()
a.Settings().SetTheme(theme.DarkTheme())

也可以使用浅色主题:

1
a.Settings().SetTheme(theme.LightTheme())

实际应用里通常尊重系统主题即可,只有在工具明确需要固定风格时再强制设置。

自定义主题

自定义主题需要实现 fyne.Theme 接口。最常见的是改颜色、字体、图标、尺寸。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type myTheme struct{}

func (myTheme) Color(name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color {
return theme.DefaultTheme().Color(name, variant)
}

func (myTheme) Font(style fyne.TextStyle) fyne.Resource {
return theme.DefaultTheme().Font(style)
}

func (myTheme) Icon(name fyne.ThemeIconName) fyne.Resource {
return theme.DefaultTheme().Icon(name)
}

func (myTheme) Size(name fyne.ThemeSizeName) float32 {
return theme.DefaultTheme().Size(name)
}

先委托给默认主题,再逐项覆盖,是比较稳妥的方式。

打包资源

图片、字体、模板文件可以用 fyne bundle 打进 Go 代码:

1
fyne bundle -o bundled.go icon.png

这样发布时不需要额外带一个资源目录。适合图标、默认配置模板、内置示例文件等小资源。

 评论
评论插件加载失败
正在加载评论插件