布局与控件大小 #
移动和调整大小 #
问:我如何将我的控件移动到不同的位置或调整其大小?
答: Fyne 应用中元素的位置和大小由它们所在的容器的布局控制。如果你的 UI 元素太小,请考虑使用不同的 布局或容器。
一个新的Window
会扩展传递给SetContent()
的任何元素以填满它的大小。每次你向此添加一个容器时,它都会根据布局划分可用空间。像HBox
和VBox
这样的布局会将内容缩小到其MinSize()
以在一个或另一个维度上打包内容。像Max
或Border
这样的布局会扩展内容以填充空间。通过编写
自定义布局,你可以完全控制容器中的项目。
问:我的图像为什么这么小?
答: 使用像 Fyne 这样的完全可缩放的用户界面工具包的一个困难是,坐标系统是与设备无关的。这允许应用根据连接的硬件以正确的分辨率或像素密度绘制,以获得最佳结果。这对于基于像素的图像意味着它们的大小可能会根据编译时未知的细节而变化。
由于这种复杂性,使用canvas.NewImageFromFile()
或类似调用加载的图像将不会设置大小,导致它非常小或默认情况下看起来被隐藏。当放置在适当的布局中时,图像将根据其FillMode
属性进行拉伸。如果你希望图像始终设置为特定大小(或更大),你可以调用Image.SetMinSize()
并为图像指定一个与设备无关的大小。
容器和布局 #
问:我如何手动控制元素的位置
答: 在某些情况下,你可能希望完全控制容器中元素的位置和大小。为此,你创建一个没有布局的容器。container.NewWithoutLayout()
函数将创建一个用于手动定位的容器——你应该将你想要在这个容器中管理的图形元素列表传递给该构造函数。
设置好后,你可以使用Move()
和Resize()
在每个元素上进行定位。在执行此操作时,请注意,它不会随着可用空间的变化而调整——它也没有明确的最小尺寸。要添加这些功能中的任何一个,你应该用
自定义布局替换你的手动定位。