一. Column 垂直布局

又叫:Column 线性垂直布局

  • 作用:子组件从上到下垂直排成一列
  • 主轴:垂直方向(上下)
  • 交叉轴:水平方向(左右)
  • 特点:
    • 不重叠、垂直往下排
    • 可设间距 space
    • 可控制:上对齐、居中、下对齐
  • 适合:页面整体、表单、设置页、列表、上下排列内容

结构:

Column({ space: 20 }) {

Text('first')

Text('second')

Text('third')

}

二.Row 水平布局

又叫:堆叠布局 / 帧布局

  • 作用:子组件从左到右水平排成一行
  • 主轴:水平方向(左右)
  • 交叉轴:垂直方向(上下)
  • 特点:
    • 不重叠、不换行(默认)
    • 可以设置间距 space
    • 可以控制:左对齐、居中、右对齐、两端对齐
  • 适合:导航栏、按钮行、标题 + 按钮、图标 + 文字一行

结构:

Row({ space: 10 }) {

Text('first')

Text('second')

Text('third')

}

三、层叠布局

又叫:堆叠布局 / 帧布局

  • 作用:子组件一层层叠在一起(前后覆盖)
  • 排列:Z 轴堆叠,后写的组件盖在前面组件上面
  • 特点:
    • 组件可以重叠、覆盖
    • 支持 9 种对齐:左上、中上、右上、左中、居中、右中、左下、中下、右下
    • 可做悬浮、弹窗、遮罩、角标、背景 + 文字
  • 适合:图片上写文字、悬浮按钮、弹窗、遮罩、轮播指示器

结构:

Stack() {

// 底层

Text('first').width('100%').height(200).backgroundColor(0xEFEFEF)

// 上层(盖在上面)

Text('second').fontSize(20).fontColor(Color.Red)

}

四、弹性布局

简介:Flex = Row + Column + 自动换行 + 自适应比例,一维弹性盒子,主轴可横可竖,能自动换行、自动分配空间。

  • 特点:
    • 可水平 / 垂直排列(direction)
    • 内容多可自动换行(wrap:Wrap)
    • 子组件可按比例瓜分空间(layoutWeight)
    • 自动适配不同屏幕,响应式强Huawei Developer
  • 适合:导航栏、标签流、卡片列表、自适应按钮组、均分布局

结构:

Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) {       Text('1').layoutWeight(1).padding(10).backgroundColor('#eee')   Text('2').layoutWeight(1).padding(10).backgroundColor('#ddd')   Text('3').layoutWeight(1).padding(10).backgroundColor('#ccc')

}

五、相对布局

简介:子组件靠锚点定位(相对父容器或其他组件),不用嵌套 Row/Column,扁平化布局Huawei Developer。

  • 特点:
    • 组件互相 “挂靠”:左 / 右 / 上 / 中 / 下对齐
    • 减少多层嵌套,性能好
    • 屏幕变化自动适配位置
    • 必须给组件设 id,用 alignRules 定规则Huawei Developer
  • 适合:复杂表单、仪表盘、不规则界面、组件错落排布

结构:

RelativeContainer() {

Text('A').id('a')

.alignRules({top:{anchor:'__container__',align:VerticalAlign.Top}})

Text('B').id('b')

.alignRules({top:{anchor:'a',align:VerticalAlign.Bottom}}) }

六、轮播图

简介左右 / 上下滑动翻页,自动轮播 + 手动滑动,首页 Banner、广告轮播专用。

  • 特点:
    • 自动播放(autoplay)、循环(loop)
    • 指示器(小圆点)、切换动画
    • 可水平 / 垂直滑动Huawei Developer
    • 支持图片 / 页面轮播
  • 适合:首页 Banner、广告、引导页、图片预览、新闻滚动

结构:

Swiper() { Text('页1').width('100%').height(200).backgroundColor('#f00')

Text('页2').width('100%').height(200).backgroundColor('#0f0')

Text('页3').width('100%').height(200).backgroundColor('#00f')

}

.loop(true).autoplay(true).interval(3000)

七、Tabs

简介顶部 / 底部 / 侧边导航,点击标签切换页面,由 TabBar(标签栏)+ TabContent(内容页)组成HarmonyOS设备开发。

  • 特点:
    • 三种位置:顶部、底部、侧边
    • 可滑动标签、可自定义图标 + 文字
    • 切换带动画,保持页面状态
  • 适合:APP 底部导航(首页 / 发现 / 我的)、分类标签、多页面切换

结构:

Tabs({ barPosition: BarPosition.End }) {

// 底部导航

TabContent() { Text('首页内容') }.tabBar('首页')

TabContent() { Text('发现内容') }.tabBar('发现')

TabContent() { Text('我的内容') }.tabBar('我的')

}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐