Skip to content
On this page

布局和组件大小

移动和改变窗口大小

Q:如何将小部件移动到其他位置或调整其大小? A:Fyne应用程序中元素的位置和大小由其所在容器的布局控制。如果UI的元素太小,请考虑使用不同的布局或容器。

新窗口将展开传递给SetContent()的任何元素以填充其大小。每次向其中添加容器时,它都会根据布局划分可用空间。像HBox和VBox这样的布局会在一个维度或另一个维度上将内容缩小到其MinSize(),以便将内容打包。像Max或Border这样的布局将扩展内容以填充空间。通过编写自定义布局,您可以完全控制容器中的项目。

Q:为什么我的image图片这么小? A:使用Fyne等完全可扩展的用户界面工具包的难点之一是坐标系与设备无关。这允许应用程序以正确的分辨率或像素密度绘制,以获得基于所连接硬件的最佳结果。这对基于像素的图像意味着,它们的大小可能会根据编译时未知的细节而变化。

由于这种复杂性,使用canvas.NewImageFromFile()或类似调用加载的图像将没有大小设置,导致其非常小或默认情况下似乎隐藏。当放置在适当的布局中时,图像将根据其FillMode属性进行拉伸。如果希望图像始终设置为特定大小(或更大),可以调用image.SetMinSize()并为图像指定与设备无关的大小。

容器和布局

Q:如何手动控制元素的位置 A:在某些情况下,您可能需要完全控制容器中元素的位置和大小。为此,您可以创建一个没有布局的容器。container.NewWithoutLayout()函数将创建一个用于手动定位的容器-您应该向该构造函数传递一个要在此容器中管理的图形元素列表。

一旦设置好,就可以在每个元素上使用Move()和Resize()来根据需要定位它。在执行此操作时,请注意,它不会随着可用空间的变化而调整,而且它也没有明确的最小大小。要添加这些功能中的任何一个,应使用自定义布局替换手动定位。