鸿蒙Flex使用

以下是链接中关于 ​HarmonyOS ArkUI弹性布局(Flex)​​ 的核心内容总结:


1. 基本概念

  • 主轴:子元素的默认排列方向轴线(起始点 → 结束点)。
  • 交叉轴:垂直于主轴的轴线。
  • 主轴尺寸:子元素在主轴方向的尺寸。
  • 交叉轴尺寸:子元素在交叉轴方向的尺寸。

2. 布局方向(direction)​

  • FlexDirection.Row(默认):水平排列,从左到右。
  • FlexDirection.RowReverse:水平反向排列,从右到左。
  • FlexDirection.Column:垂直排列,从上到下。
  • FlexDirection.ColumnReverse:垂直反向排列,从下到上。

3. 布局换行(wrap)​

  • FlexWrap.NoWrap(默认):不换行,超出则压缩子元素宽度。
  • FlexWrap.Wrap:换行,按主轴方向排列多行。
  • FlexWrap.WrapReverse:换行,按主轴反方向排列。

4. 主轴对齐方式(justifyContent)​

  • FlexAlign.Start:起始端对齐(左对齐)。
  • FlexAlign.Center:居中对齐。
  • FlexAlign.End:结束端对齐(右对齐)。
  • FlexAlign.SpaceBetween:两端对齐,子元素间距相等。
  • FlexAlign.SpaceAround:子元素间距相等,首尾间距为间距一半。
  • FlexAlign.SpaceEvenly:子元素及首尾间距完全相等。

5. 交叉轴对齐方式

​(1) 容器设置(alignItems)​

  • ItemAlign.Start:顶部对齐。
  • ItemAlign.Center:居中对齐。
  • ItemAlign.End:底部对齐。
  • ItemAlign.Stretch:拉伸填充(未设尺寸时生效)。
  • ItemAlign.Baseline:文本基线对齐。

​(2) 子元素设置(alignSelf)​

  • 优先级高于容器的 alignItems,可单独覆盖对齐方式。

​(3) 多行对齐(alignContent)​

  • 控制多行布局在交叉轴的对齐方式(如 SpaceBetweenSpaceEvenly)。

6. 自适应拉伸

  • **flexBasis**:设置主轴基准尺寸(优先级高于 width/height)。
  • **flexGrow**:按比例分配父容器剩余空间。
  • **flexShrink**:按比例压缩子元素以适应空间不足。

7. 典型场景示例

scss 复制代码
Flex({
  direction: FlexDirection.Row,
  wrap: FlexWrap.NoWrap,
  justifyContent: FlexAlign.SpaceBetween, // 主轴两端对齐
  alignItems: ItemAlign.Center // 交叉轴居中
}) {
  Text('1').width('30%').height(50)
  Text('2').width('30%').height(50)
  Text('3').width('30%').height(50)
}
.height(70)
.width('90%')
.backgroundColor('#AFEEEE')

效果​:子元素水平均匀分布,垂直居中,高度固定。


关键点总结

分类 属性 作用
布局方向 direction 控制主轴方向(水平/垂直)
换行 wrap 单行/多行布局控制
主轴对齐 justifyContent 子元素在主轴的对齐方式
交叉轴对齐 alignItems 所有子元素的统一对齐方式
子元素交叉轴对齐 alignSelf 单个子元素的对齐方式(覆盖父容器设置)
自适应 flexGrow/flexShrink 分配剩余空间/压缩空间

适用场景

  • 导航栏均匀分布、卡片布局、表单排列等需要灵活控制子元素对齐与分布的界面。

此文档详细说明了 Flex 布局在 HarmonyOS ArkUI 中的完整能力,开发者可通过调整参数实现复杂响应式布局。

相关推荐
HarmonyOS_SDK1 小时前
汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
harmonyos
whysqwhw1 小时前
鸿蒙沉浸式
harmonyos
whysqwhw2 小时前
鸿蒙Stack使用
harmonyos
whysqwhw3 小时前
鸿蒙Row/Column使用
harmonyos
zhanshuo14 小时前
在鸿蒙里优雅地处理网络错误:从 Demo 到实战案例
harmonyos
zhanshuo14 小时前
在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
harmonyos
whysqwhw20 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw21 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw1 天前
鸿蒙各种生命周期
harmonyos