<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>容器与布局 on 菠萝学</title><link>https://www.poloxue.com/docs/gofyne/04-container/</link><description>Recent content in 容器与布局 on 菠萝学</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>poloxue123@gmail.com (POLO XUE)</managingEditor><webMaster>poloxue123@gmail.com (POLO XUE)</webMaster><copyright>© 2026 POLO XUE</copyright><lastBuildDate>Thu, 21 May 2026 19:07:14 +0800</lastBuildDate><atom:link href="https://www.poloxue.com/docs/gofyne/04-container/index.xml" rel="self" type="application/rss+xml"/><item><title>盒子 Box</title><link>https://www.poloxue.com/docs/gofyne/04-container/01-box/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/01-box/</guid><description>&lt;p&gt;如在&lt;a href="https://www.poloxue.com/docs/gofyne/02-explore/02-container/" &gt;容器和布局&lt;/a&gt;中讨论的，容器中的元素可以使用布局来排列。本节探讨内置布局及其使用方法。&lt;/p&gt;
&lt;p&gt;最常用的布局是 &lt;code&gt;layout.BoxLayout&lt;/code&gt;，它有两个变体，水平和垂直。盒子布局将所有元素排列在单个行或列中，并可选择间隔以协助对齐。&lt;/p&gt;</description></item><item><title>网格 Grid</title><link>https://www.poloxue.com/docs/gofyne/04-container/02-grid/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/02-grid/</guid><description>&lt;p&gt;网格布局将容器的元素以网格模式布置，具有固定数量的列。项目将填充单个行，直到达到列数，之后将创建新行。垂直空间将在对象的每一行之间平均分配。&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;layout.NewGridLayout(cols)&lt;/code&gt; 创建网格布局，其中 cols 是您希望每行中有的项目（列）数量。然后将此布局作为第一个参数传递给 &lt;code&gt;container.New(...)&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>网格包装 Grid Wrap</title><link>https://www.poloxue.com/docs/gofyne/04-container/03-gridwrap/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/03-gridwrap/</guid><description>&lt;p&gt;与之前的网格布局一样，网格包装布局在网格模式中创建元素的排列。然而，这种网格没有固定数量的列，而是为每个单元格使用固定大小，然后将内容流动到需要显示项目的尽可能多的行中。&lt;/p&gt;</description></item><item><title>边框布局 Border</title><link>https://www.poloxue.com/docs/gofyne/04-container/04-border/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/04-border/</guid><description>&lt;p&gt;边框布局可能是构建用户界面时使用最广泛的布局之一，因为它允许围绕一个将扩展以填充空间的中心元素定位项目。要创建一个边框容器，你需要将应该在边框位置定位的 &lt;code&gt;fyne.CanvasObject&lt;/code&gt; 作为构造函数的前四个参数传递。这个语法基本上就是 &lt;code&gt;container.NewBorder(top, bottom, left, right, center)&lt;/code&gt;，如示例所示。&lt;/p&gt;</description></item><item><title>表单布局 Form</title><link>https://www.poloxue.com/docs/gofyne/04-container/05-form/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/05-form/</guid><description>&lt;p&gt;&lt;code&gt;layout.FormLayout&lt;/code&gt; 类似于两列的 &lt;a href="https://www.poloxue.com/docs/gofyne/04-container/02-grid/" &gt;网格布局&lt;/a&gt;，但针对应用中的表单布局进行了调整。每个项目的高度将是每行中两个最小高度中的较大者。第一列中所有项目的最大最小宽度将是左侧项目的宽度，而每行中的第二个项目将扩展以填满空间。&lt;/p&gt;</description></item><item><title>居中布局 Center</title><link>https://www.poloxue.com/docs/gofyne/04-container/06-center/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/06-center/</guid><description>&lt;p&gt;&lt;code&gt;layout.CenterLayout&lt;/code&gt; 将其容器中的所有项目都组织在可用空间的中心。这些对象将按照它们被传递到容器的顺序绘制，最后传递的对象将被绘制在最顶部。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;image/color&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/app&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/canvas&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/container&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/layout&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/theme&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;myApp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;app&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;New&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;myWindow&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myApp&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewWindow&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Center Layout&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;img&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;canvas&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewImageFromResource&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;theme&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;FyneLogo&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;img&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;FillMode&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;canvas&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ImageFillOriginal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;text&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;canvas&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewText&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Overlay&amp;#34;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;color&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Black&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;content&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;container&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;New&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;layout&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewCenterLayout&lt;/span&gt;(), &lt;span style="color:#a6e22e"&gt;img&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;text&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;myWindow&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;SetContent&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;myWindow&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ShowAndRun&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;中心布局使所有项目保持其最小大小，如果你希望扩展项目以填充空间，那么请参见&lt;a href="https://www.poloxue.com/docs/gofyne/04-container/07-max/" &gt;&lt;code&gt;layout.MaxLayout&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>最大布局 Max</title><link>https://www.poloxue.com/docs/gofyne/04-container/07-max/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/07-max/</guid><description>&lt;p&gt;&lt;code&gt;layout.MaxLayout&lt;/code&gt;是最简单的布局，它将容器中的所有项目设置为与容器相同的大小。这通常在一般的容器中不太有用，但在组合控件时可能适用。&lt;/p&gt;</description></item><item><title>Tab 布局 AppTabs</title><link>https://www.poloxue.com/docs/gofyne/04-container/08-apptabs/</link><pubDate>Wed, 19 Feb 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/04-container/08-apptabs/</guid><description>&lt;p&gt;AppTabs 容器用于允许用户在不同的内容面板之间切换。标签页要么只有文本，要么是文本和图标。建议不要混合使用一些标签页有图标而另一些没有图标的情况。使用 &lt;code&gt;container.NewAppTabs(...)&lt;/code&gt; 创建标签容器，并传递 &lt;code&gt;container.TabItem&lt;/code&gt; 项（可以使用 &lt;code&gt;container.NewTabItem(...)&lt;/code&gt; 创建）。&lt;/p&gt;</description></item></channel></rss>