在 ArkTS 的 Flex 布局中,FlexAlign.SpaceBetween
、FlexAlign.SpaceAround
和 FlexAlign.SpaceEvenly
是控制子元素在主轴上分布方式的属性,区别如下:
1. FlexAlign.SpaceBetween
- 效果:子元素均匀分布在主轴上,首尾子元素紧贴容器边缘,中间子元素间距相等。
- 特点:
- 第一个子元素位于起点,最后一个子元素位于终点。
- 中间子元素之间的间距 = (容器宽度 - 所有子元素总宽度) / (子元素数量 - 1)。
- 适用场景:需要子元素两端对齐,中间等距分布。
2. FlexAlign.SpaceAround
- 效果:子元素周围的间距相等,但子元素之间的间距是两侧间距的 2 倍。
- 特点:
- 每个子元素两侧的间距 = (容器宽度 - 所有子元素总宽度) / (子元素数量 + 1)。
- 子元素之间的间距 = 2 * 两侧间距。
- 适用场景:希望子元素周围有均匀的“呼吸空间”。
3. FlexAlign.SpaceEvenly
- 效果:所有子元素和间距完全均匀分布,包括首尾子元素与容器边缘的间距。
- 特点:
- 每个子元素之间的间距 = 首尾子元素与容器边缘的间距。
- 间距 = (容器宽度 - 所有子元素总宽度) / (子元素数量 + 1)。
- 适用场景:需要所有元素和间距完全平均分布。
可视化对比
假设容器宽度为 400px
,3 个子元素各宽 100px
:
属性 | 首尾间距 | 子元素间距 | 效果示意图 |
---|---|---|---|
SpaceBetween | 0 | (400-300)/2 = 50px | [🔵-----🔵-----🔵] |
SpaceAround | 50px | 100px | [🔵–🔵----🔵–] |
SpaceEvenly | 50px | 50px | [🔵----🔵----🔵] |
总结
SpaceBetween
:两端对齐,中间等距。SpaceAround
:子元素周围有均匀小间距,中间大间距。SpaceEvenly
:所有间距(包括两端)完全相等。
根据布局需求选择:需要两端对齐选 SpaceBetween
,需要均匀呼吸感选 SpaceAround
,需要完全平均分布选 SpaceEvenly
。