用途:这是一个面向代理的技能,用于在 Vaadin 25 中正确使用 HorizontalLayout 与 VerticalLayout。当用户要求创建布局、排列组件时使用;不确定具体 API 细节时,用 Vaadin MCP 工具(search_vaadin_docs、get_component_java_api、get_component_styling)查最新文档,始终把 vaadin_version 设为 "25"、ui_language 设为 "java"。查精确 Java API 签名或源码用 javadoc MCP。
何时不用:应用外壳用 AppLayout;卡片或组件网格用 Dashboard;需要二维行列网格用 CSS Grid;排列表单字段用 FormLayout。这两个布局适合单行或单列的组件排列。FlexLayout 能力相同但更灵活,官方推荐多数场景仍用这两个布局。
关键默认行为:VerticalLayout 宽度 100%、高度未定义、间距开、内边距开;HorizontalLayout 宽高均未定义、间距开、内边距关。嵌套时务必显式设置尺寸。
对齐:二者均为 flexbox 容器,用 setJustifyContentMode() 控主轴分布,setAlignItems() 控交叉轴;可用 layout.setAlignSelf(Alignment.X, child) 覆盖单个子项。
间距、内边距、外边距:setSpacing(boolean)、setPadding(boolean)、setMargin(boolean),可用主题变体或像素值微调,不要混用 Lumo 与 Aura 变体。
伸缩:用 layout.setFlexGrow(1, component),注意是父布局调用并传入子项;漏传子项不会编译报错,只是静默无效。setWidthFull 等会设字面 100%,可能让固定尺寸兄弟被压缩,可用 setFlexGrow 或 setFlexShrink(0, 固定组件) 解决。溢出时给组件 setMinHeight("0") 或 setMinWidth("0")。HorizontalLayout 可 setWrap(true)。需要滚动时用 Scroller 包裹,内部布局不要设高度。实验性 layoutComponentImprovements 标志默认关闭,不要假设其行为。
限制:资料未提供安装命令、价格或平台支持范围。