LayoutAlgorithm
DynamicLayout组件支持的布局算法详细信息。
说明:
本模块首批接口从API version 24开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import { LayoutAlgorithm, CustomLayoutAlgorithm, RowLayoutAlgorithm, ColumnLayoutAlgorithm, StackLayoutAlgorithm, GridLayoutAlgorithm } from '@kit.ArkUI';
LayoutAlgorithm
动态布局容器DynamicLayout的布局算法基础类型。
说明:
该类型变量可以赋值具体的布局算法类对象,如CustomLayoutAlgorithm类对象、RowLayoutAlgorithm类对象等。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
CustomLayoutAlgorithm
自定义布局算法类。
说明:
CustomLayoutAlgorithm类对象可以赋值给LayoutAlgorithm类型变量,作为DynamicLayout组件的入参指定布局算法。
装饰器类型: @ObservedV2
onMeasure
onMeasure(self: FrameNode, constraint: LayoutConstraint): void
通过重写此函数,开发者可以自定义测量子组件的大小。ArkUI框架会在动态布局组件确定尺寸时,将该组件对应的FrameNode和布局约束通过onMeasure传递给开发者。不允许在onMeasure函数中改变状态变量。
说明:
在此函数中,开发者可以调用FrameNode的getChild()方法获取子组件FrameNode,调用FrameNode的measure()方法测量子组件大小,参考DynamicLayout组件示例1(自定义布局算法实现瀑布流布局)。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| self | FrameNode | 是 | 动态布局组件在组件树上的实体节点。 |
| constraint | LayoutConstraint | 是 | 动态布局组件进行测量时使用的布局约束。 |
onLayout
onLayout(self: FrameNode, position: Position): void
通过重写此函数,开发者可以自定义排列子组件的位置。ArkUI框架会在动态布局组件确定位置时,将该组件对应的FrameNode和布局位置通过onLayout传递给开发者。不允许在onLayout函数中改变状态变量。
说明:
在此函数中,开发者可以调用FrameNode的getChild()方法获取子组件FrameNode,调用FrameNode的layout()方法设置子组件位置,参考DynamicLayout组件示例1(自定义布局算法实现瀑布流布局)。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| self | FrameNode | 是 | 动态布局组件在组件树上的实体节点。 |
| position | Position | 是 | 动态布局组件进行布局时使用的位置信息。 |
示例:
请参考DynamicLayout组件示例1(自定义布局算法实现瀑布流布局)。
RowLayoutAlgorithm
水平方向线性布局算法类。
说明:
RowLayoutAlgorithm类对象可以赋值给LayoutAlgorithm类型变量,作为DynamicLayout组件的入参指定布局算法。
装饰器类型: @ObservedV2
属性
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| space | LengthMetrics | 否 | 是 | 横向布局元素水平方向间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 装饰器类型:@Trace |
| alignItems | VerticalAlign | 否 | 是 | 所有子组件在垂直方向上的对齐格式。 默认值:VerticalAlign.Center 非法值:按默认值处理。 装饰器类型:@Trace |
| justifyContent | FlexAlign | 否 | 是 | 所有子组件在水平方向上的对齐格式。 默认值:FlexAlign.Start 非法值:按默认值处理。 装饰器类型:@Trace |
| isReverse | boolean | 否 | 是 | 子组件在水平方向上的排列是否反转。取值为true表示子组件在水平方向上反转排列,由于水平方向受通用属性direction影响,如果direction属性生效,再做一次反转。取值为false表示子组件在水平方向上正序排列。 默认值:false 非法值:按默认值处理。 装饰器类型:@Trace |
constructor
constructor(option?: RowLayoutAlgorithmOptions)
水平方向线性布局算法类的构造函数。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| option | RowLayoutAlgorithmOptions | 否 | 水平方向线性布局算法的构造入参,设置布局算法的间距、主轴对齐方式、交叉轴对齐方式及主轴排列方向。 |
示例:
请参考DynamicLayout组件示例2(切换布局算法)。
RowLayoutAlgorithmOptions对象说明
设置水平方向线性布局算法的间距、主轴对齐方式、交叉轴对齐方式及主轴排列方向。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| space | LengthMetrics | 否 | 是 | 横向布局元素水平方向间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 |
| alignItems | VerticalAlign | 否 | 是 | 所有子组件在垂直方向上的对齐格式。 默认值:VerticalAlign.Center 非法值:按默认值处理。 |
| justifyContent | FlexAlign | 否 | 是 | 所有子组件在水平方向上的对齐格式。 默认值:FlexAlign.Start 非法值:按默认值处理。 |
| isReverse | boolean | 否 | 是 | 子组件在水平方向上的排列是否反转。取值为true表示子组件在水平方向上反转排列,由于水平方向受通用属性direction影响,如果direction属性生效,再做一次反转。取值为false表示子组件在水平方向上正序排列。 默认值:false 非法值:按默认值处理。 |
ColumnLayoutAlgorithm
垂直方向线性布局算法类。
说明:
ColumnLayoutAlgorithm类对象可以赋值给LayoutAlgorithm类型变量,作为DynamicLayout组件的入参指定布局算法。
装饰器类型: @ObservedV2
属性
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| space | LengthMetrics | 否 | 是 | 纵向布局元素垂直方向间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 装饰器类型:@Trace |
| alignItems | HorizontalAlign | 否 | 是 | 所有子组件在水平方向上的对齐格式。 默认值:HorizontalAlign.Center 非法值:按默认值处理。 装饰器类型:@Trace |
| justifyContent | FlexAlign | 否 | 是 | 所有子组件在垂直方向上的对齐格式。 默认值:FlexAlign.Start 非法值:按默认值处理。 装饰器类型:@Trace |
| isReverse | boolean | 否 | 是 | 子组件在垂直方向上的排列是否反转。取值为true表示子组件在垂直方向上反转排列。取值为false表示子组件在垂直方向上正序排列。 默认值:false 非法值:按默认值处理。 装饰器类型:@Trace |
constructor
constructor(option?: ColumnLayoutAlgorithmOptions)
垂直方向线性布局算法类的构造函数。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| option | ColumnLayoutAlgorithmOptions | 否 | 垂直方向线性布局算法的构造入参,设置布局算法的间距、主轴对齐方式、交叉轴对齐方式及主轴排列方向。 |
示例:
请参考DynamicLayout组件示例2(切换布局算法)。
ColumnLayoutAlgorithmOptions对象说明
设置垂直方向线性布局算法的间距、主轴对齐方式、交叉轴对齐方式及主轴排列方向。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| space | LengthMetrics | 否 | 是 | 纵向布局元素垂直方向间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 |
| alignItems | HorizontalAlign | 否 | 是 | 所有子组件在水平方向上的对齐格式。 默认值:HorizontalAlign.Center 非法值:按默认值处理。 |
| justifyContent | FlexAlign | 否 | 是 | 所有子组件在垂直方向上的对齐格式。 默认值:FlexAlign.Start 非法值:按默认值处理。 |
| isReverse | boolean | 否 | 是 | 子组件在垂直方向上的排列是否反转。取值为true表示子组件在垂直方向上反转排列。取值为false表示子组件在垂直方向上正序排列。 默认值:false 非法值:按默认值处理。 |
StackLayoutAlgorithm
堆叠布局算法类。
说明:
StackLayoutAlgorithm类对象可以赋值给LayoutAlgorithm类型变量,作为DynamicLayout组件的入参指定布局算法。
装饰器类型: @ObservedV2
属性
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| alignContent | LocalizedAlignment | 否 | 是 | 设置子组件在堆叠布局算法中对齐格式。 默认值:LocalizedAlignment.CENTER 非法值:按默认值处理。 装饰器类型:@Trace |
constructor
constructor(option?: StackLayoutAlgorithmOptions)
堆叠布局算法类的构造函数。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| option | StackLayoutAlgorithmOptions | 否 | 堆叠布局算法的构造入参,设置九宫格对齐格式。 |
示例:
请参考DynamicLayout组件示例2(切换布局算法)。
StackLayoutAlgorithmOptions对象说明
设置堆叠布局算法的对齐方式。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| alignContent | LocalizedAlignment | 否 | 是 | 设置子组件在堆叠布局算法中对齐格式。 默认值:LocalizedAlignment.CENTER 非法值:按默认值处理。 |
GridLayoutAlgorithm
网格布局算法类。
说明:
GridLayoutAlgorithm类对象可以赋值给LayoutAlgorithm类型变量,作为DynamicLayout组件的入参指定布局算法。
装饰器类型: @ObservedV2
属性
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| columnsTemplate | string |ItemFillPolicy | 否 | 是 | 设置当前网格布局的列数。 默认值:'1fr' 非法值:按默认值处理。 装饰器类型:@Trace |
| columnsGap | LengthMetrics | 否 | 是 | 列与列之间的间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 装饰器类型:@Trace |
| rowsGap | LengthMetrics | 否 | 是 | 行与行之间的间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 装饰器类型:@Trace |
constructor
constructor(option?: GridLayoutAlgorithmOptions)
网格布局算法类的构造函数。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| option | GridLayoutAlgorithmOptions | 否 | 网格布局算法的构造入参,设置网格布局的列数、列间距、行间距。 |
示例:
请参考DynamicLayout组件示例2(切换布局算法)。
GridLayoutAlgorithmOptions对象说明
设置网格布局算法的列数模板、列间距、行间距。
模型约束: 此接口仅可在Stage模型下使用。
卡片能力: 从API version 24开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 24开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| columnsTemplate | string |ItemFillPolicy | 否 | 是 | 设置当前网格布局的列数。 默认值:'1fr' 非法值:按默认值处理。 |
| columnsGap | LengthMetrics | 否 | 是 | 列与列之间的间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 |
| rowsGap | LengthMetrics | 否 | 是 | 行与行之间的间距。 默认值:LengthMetrics.vp(0) 非法值:按默认值处理。 |
你可能感兴趣的鸿蒙文章
openharmony 鸿蒙 arkts-apis-uicontext-contextmenucontroller
openharmony 鸿蒙 errorcode-canvas
openharmony 鸿蒙 capi-oh-nativexcomponent-native-xcomponent-oh-nativexcomponent
openharmony 鸿蒙 errorcode-bindSheet
openharmony 鸿蒙 js-apis-arkui-uiExtension-sys
openharmony 鸿蒙 capi-arkui-accessibility-arkui-accessibilityeventinfo
openharmony 鸿蒙 capi-arkui-rendernodeutils
openharmony 鸿蒙 capi-native-node-h-nodeattributetype-layoutcomponent