文档管理中心

您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。

指南与API参考API参考应用框架ArkUI(方舟UI框架)ArkTS组件行列与堆叠Column

Column

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

沿垂直方向布局的容器。适用于需要将多个子组件按垂直方向依次排列的场景,如列表项、表单项、卡片内容等。支持设置子组件间距、对齐方式等属性,能够快速实现垂直方向的线性布局。

说明

该组件从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

Column未设置高度或宽度时,在主轴(垂直方向)或交叉轴(水平方向)方向上自适应子组件大小。

子组件

可以包含子组件。

接口

Column

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

Column(options?: ColumnOptions)

创建垂直方向线性布局容器,可以设置子组件的间距。

说明

在复杂界面中使用多组件嵌套时,若布局组件的嵌套层数过深或嵌套的组件数量过多,将会产生额外开销。建议通过移除冗余节点、利用布局边界减少布局计算、合理采用渲染控制语法及布局组件方法来优化性能。最佳实践请参考布局优化指导。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
options18+ ColumnOptions 否

Column组件的间距配置选项。通过space属性设置纵向布局元素垂直方向间距。当需要为子组件设置固定垂直间距时传入此参数;省略时不设置子组件间距。

模型约束: 此接口仅可在Stage模型下使用。

Column18+

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

Column(options?: ColumnOptions | ColumnOptionsV2)

创建垂直方向线性布局容器,可以设置子组件的间距。

说明

在复杂界面中使用多组件嵌套时,若布局组件的嵌套层数过深或嵌套的组件数量过多,将会产生额外开销。建议通过移除冗余节点、利用布局边界减少布局计算、合理采用渲染控制语法及布局组件方法来优化性能。最佳实践请参考布局优化指导。

卡片能力: 从API version 18开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 18开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
options ColumnOptions | ColumnOptionsV2 否 Column组件的间距配置选项。通过space属性设置纵向布局元素垂直方向间距,space支持设置number、string或Resource类型。当需要为子组件设置固定垂直间距时传入此参数;省略时不设置子组件间距。

ColumnOptions18+对象说明

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

设置Column组件的子组件间距属性。

说明

为规范匿名对象的定义,API 18版本修改了此处的元素定义。其中,保留了历史匿名对象的起始版本信息,会出现外层元素@since版本号高于内层元素版本号的情况,但这不影响接口的使用。

卡片能力: 从API version 18开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 18开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 只读 可选 说明
space7+ string | number 否 是

纵向布局元素垂直方向间距。

space为负数或者justifyContent设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时,space不生效。

取值范围:[0, +∞)

默认值:0

非法值:按默认值处理。

单位:vp

说明:

space取值是大于等于0的数字,或者可以转换为非负数字的字符串,不支持设置百分比。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

ColumnOptionsV218+对象说明

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

设置Column组件的子组件间距属性。间距类型SpaceType支持number、string或Resource类型。

卡片能力: 从API version 18开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 18开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 只读 可选 说明
space SpaceType 否 是

设置纵向布局元素垂直方向间距。

space为负数或者justifyContent设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时,space不生效。

取值范围:[0, +∞)

默认值:0

单位:vp

非法值:按默认值处理。

说明:

space取值是大于等于0的数字,或者可以转换为非负数字的字符串,或者可以转换为数字的Resource类型数据,不支持设置百分比。

SpaceType18+

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

type SpaceType = string | number | Resource

Column组件构造函数中space支持的数据类型,取值类型为下表类型中的并集。

卡片能力: 从API version 18开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 18开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
类型 说明
number 表示类型为数字,取值为大于等于0的数字。取负数或非法值时,按默认值0处理。
string 表示值类型为字符串,取值为可以转换为非负数字的字符串。取负数或不可转换的字符串时,按默认值0处理。
Resource 表示值为资源引用类型,取值为从系统资源或者应用资源中引入的数据值。

属性

除支持通用属性外,还支持以下属性:

alignItems

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

alignItems(value: HorizontalAlign)

设置子组件在水平方向上的对齐格式。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value HorizontalAlign 是

子组件在水平方向上的对齐格式。

默认值:HorizontalAlign.Center

justifyContent8+

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

justifyContent(value: FlexAlign)

设置子组件在垂直方向上的对齐格式。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value FlexAlign 是

子组件在垂直方向上的对齐格式。

默认值:FlexAlign.Start

说明: 若子组件不设置flexShrink,FlexAlign.Center和FlexAlign.End可能失效,详见下方说明。设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时,space属性不生效。

说明

Column布局时若子组件不设置flexShrink则默认不会压缩子组件,即所有子组件主轴大小累加可超过容器主轴,此时FlexAlign.Center和FlexAlign.End会失效。

reverse12+

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

reverse(isReversed: Optional<boolean>)

设置子组件在垂直方向上的排列是否反转。

卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
isReversed Optional<boolean> 是

子组件在垂直方向上的排列是否反转。

默认值:true。设置true表示子组件在垂直方向上反转排列,设置false表示子组件在垂直方向上正序排列。

说明

若未设置reverse属性,主轴方向不反转;若设置了reverse属性,且参数值为undefined,则视为默认值true,主轴方向反转。

通用属性direction只能改变Column交叉轴方向,不改变Column主轴方向,因此与reverse属性互不影响。

事件

支持通用事件。

示例

示例1(设置Column组件的布局属性)

本示例展示设置Column组件的布局属性,如间距、对齐方式等属性后的效果。

收起
自动换行
深色代码主题
复制
  1. // resources/base/element/string.json
  2. {
  3. "string": [
  4. {
  5. "name": "stringSpace",
  6. "value": "5"
  7. }
  8. ]
  9. }
收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct ColumnExample {
  5. build() {
  6. Scroll() {
  7. Column({ space: 5 }) {
  8. // 设置子元素垂直方向间距为5
  9. Text('space').width('90%')
  10. Column({ space: 5 }) {
  11. Column().width('100%').height(30).backgroundColor(0xAFEEEE)
  12. Column().width('100%').height(30).backgroundColor(0x00FFFF)
  13. }.width('90%').height(100).border({ width: 1 })
  14. // 通过资源引用方式设置子元素垂直方向间距
  15. Text('Resource space').width('90%')
  16. Column({ space: $r('app.string.stringSpace') }) {
  17. Column().width('100%').height(30).backgroundColor(0xAFEEEE)
  18. Column().width('100%').height(30).backgroundColor(0x00FFFF)
  19. }.width('90%').height(100).border({ width: 1 })
  20. // 设置子元素水平方向对齐方式
  21. Text('alignItems(Start)').width('90%')
  22. Column() {
  23. Column().width('50%').height(30).backgroundColor(0xAFEEEE)
  24. Column().width('50%').height(30).backgroundColor(0x00FFFF)
  25. }.alignItems(HorizontalAlign.Start).width('90%').border({ width: 1 })
  26. Text('alignItems(End)').width('90%')
  27. Column() {
  28. Column().width('50%').height(30).backgroundColor(0xAFEEEE)
  29. Column().width('50%').height(30).backgroundColor(0x00FFFF)
  30. }.alignItems(HorizontalAlign.End).width('90%').border({ width: 1 })
  31. Text('alignItems(Center)').width('90%')
  32. Column() {
  33. Column().width('50%').height(30).backgroundColor(0xAFEEEE)
  34. Column().width('50%').height(30).backgroundColor(0x00FFFF)
  35. }.alignItems(HorizontalAlign.Center).width('90%').border({ width: 1 })
  36. // 设置子元素垂直方向的对齐方式
  37. Text('justifyContent(Center)').width('90%')
  38. Column() {
  39. Column().width('90%').height(30).backgroundColor(0xAFEEEE)
  40. Column().width('90%').height(30).backgroundColor(0x00FFFF)
  41. }.height(100).border({ width: 1 }).justifyContent(FlexAlign.Center)
  42. Text('justifyContent(End)').width('90%')
  43. Column() {
  44. Column().width('90%').height(30).backgroundColor(0xAFEEEE)
  45. Column().width('90%').height(30).backgroundColor(0x00FFFF)
  46. }.height(100).border({ width: 1 }).justifyContent(FlexAlign.End)
  47. }.width('100%').padding({ top: 5 })
  48. }.width('100%').height('100%')
  49. }
  50. }

示例2(设置反转属性)

本示例展示设置Column组件的reverse属性后的效果。

收起
自动换行
深色代码主题
复制
  1. @Entry
  2. @Component
  3. struct ColumnReverseSample {
  4. build() {
  5. Column() {
  6. Text("1")
  7. .width(50)
  8. .height(100)
  9. .backgroundColor(0xAFEEEE)
  10. Text("2")
  11. .width(50)
  12. .height(100)
  13. .backgroundColor(0x00FFFF)
  14. }
  15. .height(300)
  16. .width(100)
  17. .border({ width: 1 })
  18. .reverse(true)
  19. }
  20. }