.NET MAUI核心布局控件有StackLayout、Grid、FlexLayout和AbsoluteLayout:StackLayout用于线性堆叠,Grid实现行列精确定位,FlexLayout支持响应式弹性布局,AbsoluteLayout提供绝对坐标定位但慎用。

.NET MAUI 的界面布局靠的是“容器控件”——它们不直接显示内容,而是负责安排子控件的位置、大小和排列方式。掌握几个核心布局控件,比死记属性更管用。
StackLayout:最常用的线性堆叠
适合列表、表单、按钮组这类按顺序排成一列或一行的场景。默认垂直堆叠(Vertical),也可设为水平(Horizontal)。
- 关键属性:Orientation(Vertical/Horizontal)、Spacing(子项间距)
- 子控件默认占满可用宽度(Vertical时)或高度(Horizontal时),但不会自动拉伸;想让某个子项占剩余空间,给它加 VerticalOptions="FillAndExpand" 或 HorizontalOptions="FillAndExpand"
- 不支持复杂对齐(比如右对齐按钮+左对齐文字),这时该换 Grid 或 FlexLayout
Grid:灵活的行列网格
类似 CSS Grid 或 HTML Table,适合需要精确定位、跨行跨列、响应式调整的界面,比如登录页、仪表盘卡片布局。
- 先定义 RowDefinitions 和 ColumnDefinitions(例如
) - 子控件用 Grid.Row、Grid.Column、Grid.RowSpan、Grid.ColumnSpan 定位
- 高度/宽度支持
Auto(内容自适应)、*(均分剩余空间)、2*(占两份)等写法
FlexLayout:响应式弹性布局
对标 CSS Flexbox,特别适合动态内容、多端适配(如手机横竖屏切换)、流式标签栏等场景。
- 设置 Direction(Row/Column)、Wrap(是否换行)、JustifyContent(主轴对齐)、AlignItems(交叉轴对齐)
- 子控件可单独设 FlexLayout.AlignSelf 覆盖整体对齐,或用 FlexLayout.Order 调整渲染顺序
- 注意:FlexLayout 不自带滚动,内容超长需嵌套 ScrollView
AbsoluteLayout:绝对定位(慎用)
通过 X、Y 坐标和 WidthRequest/HeightRequest 精确摆放子控件,适合动画、遮罩层、游戏UI等特殊需求。
- 子控件用 AbsoluteLayout.LayoutBounds 设置位置尺寸,格式如
"0.1, 0.2, 200, 100"(X, Y, Width, Height) - 坐标支持相对值(0~1 表示百分比)或绝对像素,搭配 AbsoluteLayout.LayoutFlags 控制解析方式(如
All表示全相对) - 不推荐用于常规页面——难适配不同屏幕,维护成本高
基本上就这些。实际开发中,StackLayout 快速搭原型,Grid 处理结构化区域,FlexLayout 应对动态或响应式需求。选哪个不看“高级”,而看“是否好改、是否好适配”。










