Column主轴垂直、Row主轴水平,justifyContent控制主轴对齐、alignItems控制交叉轴对齐;Column用space设垂直间距、alignItems控水平对齐、justifyContent控垂直分布(需显式设高);Row同理但方向相反,且必须设width防截断;嵌套时注意层级与性能优化。

在HarmonyOS ArkTS开发中,需要让多个UI组件按垂直或水平方向依次排列,比如构建登录页的输入框堆叠、首页的横向图标导航栏、小说阅读器的章节列表等场景,必须正确使用Column和Row容器才能实现稳定可控的线性布局。
理解主轴与交叉轴的方向差异
Column的主轴是垂直方向(从上到下),交叉轴是水平方向;Row的主轴是水平方向(从左到右),交叉轴是垂直方向。这个基础认知决定后续所有对齐属性的作用效果——【justifyContent控制主轴对齐,alignItems控制交叉轴对齐】。写错方向会导致布局完全偏离预期,例如在Column里用justifyContent设置“居右”,实际不会生效,因为“右”属于交叉轴范畴,该用alignItems。
主轴方向决定了space属性生效的方向:Column的space是子组件间垂直间距,Row的space是子组件间水平间距。
Column垂直布局的四种核心用法
方法一:基础堆叠(默认行为)
直接使用Column()包裹子组件,子组件自动从上到下紧密排列,无额外间距,宽度自适应最大子项宽度。
方法二:统一垂直间距
在构造函数中传入space参数:Column({space: 16}),所有相邻子组件间插入16vp空白;注意space只作用于主轴方向,不影响左右边距。
方法三:水平方向对齐控制
调用.alignItems()方法:.alignItems(HorizontalAlign.Center)使所有子组件水平居中;.alignItems(HorizontalAlign.End)右对齐;不设置时默认为HorizontalAlign.Start(左对齐)。
方法四:垂直方向分布控制
调用.justifyContent()方法:.justifyContent(FlexAlign.SpaceBetween)让首尾子组件贴顶贴底,中间均匀分布;.justifyContent(FlexAlign.Center)整体垂直居中;【若Column高度未显式设定(如.height('100%')),justifyContent可能无视觉效果】。
Row水平布局的关键操作步骤
第一步:创建基础Row容器
使用Row()包裹需横向排列的子组件,例如图标+文字组合、Tab标签栏。
第二步:设置水平间距
传入space参数:Row({space: 8}),子组件间插入8vp水平空隙;此值不可为负数,否则布局异常。
第三步:控制垂直对齐(交叉轴)
调用.alignItems():.alignItems(VerticalAlign.Center)让所有子组件在Row高度内垂直居中;这是最常用设置,避免文字与图标上下错位。
第四步:处理宽度溢出
Row默认宽度为0,必须显式设置.width(),否则子组件可能被截断或无法显示;推荐使用百分比(如.width('100%'))或固定值(如.width(300))。
嵌套组合实现复杂页面结构
真实页面极少只用单一容器。例如小说阅读器首页:外层用Column纵向划分搜索栏、公告区、分类导航、列表区块;分类导航内部用Row横向滚动展示标签;每个列表项又用Column组织封面图、标题、简介三行内容。
嵌套时务必注意性能:避免深度超过5层的容器嵌套,优先用space替代逐个子项加margin,用.padding()控制内边距而非靠子组件自身留白。
Scroll容器常与Column配合使用:将Column放入Scroll内可实现长列表滚动,此时Column无需设height,Scroll会接管高度计算。

















