当前位置: 首页 > news >正文

DevEco Studio鸿蒙中布局代码具体步骤

布局

一、鸿蒙 ArkTS 基础布局总述

在 HarmonyOS ArkTS 开发中,布局容器是页面 UI 排版的核心载体,所有文本、图片、按钮等组件都必须放置在布局容器内进行有序排列。系统提供 5 类常用基础布局,分别为:垂直布局、水平布局、相对布局、层叠布局、弹性布局。

通用核心布局规则

单页面唯一根布局规则:任意页面的build()函数中,只能存在一个顶层根布局容器,不允许并列多个根布局;
布局嵌套规则:可在根布局容器内部,无限嵌套其他任意布局容器,通过多层嵌套组合实现复杂页面排版;
布局通用属性:所有布局容器均支持width、height、padding、margin、justifyContent、alignItems等通用样式控制组件对齐、间距与尺寸。
二、五大布局详细介绍

1. 垂直布局 Column

组件标识:Column()

排列规则:内部所有子组件 ** 沿垂直方向(从上至下)** 依次排列。

适用场景:

页面正文图文上下排版(如学校简介、详情介绍页面);

表单输入框纵向排列;

列表、轮播 + 文字组合页面。

核心对齐属性:

.justifyContent(FlexAlign.Center):垂直居中;

.alignItems(ItemAlign.Center):水平居中;

最简示例代码:

ets

Column(){

Text("第一行文字")

Text("第二行文字")

}

.width("100%")

.padding(15)

2. 水平布局 Row

组件标识:Row()

排列规则:内部所有子组件 ** 沿水平方向(从左至右)** 依次排列。

适用场景:

顶部导航栏 、底部标签栏;

按钮组、横向功能选项;

图片 + 文字横向组合卡片。

核心对齐属性:

.justifyContent(FlexAlign.SpaceEvenly):组件均匀平分横向空间;

.alignItems(ItemAlign.Center):垂直居中;

最简示例代码:

ets

Row(){

Text("按钮1")

Text("按钮2")

Text("按钮3")

}

.width("100%")

3. 相对布局 RelativeContainer

组件标识:RelativeContainer()

排列规则:不固定排布方向,通过给每个子组件设置 ID、锚点关系,控制组件相对位置(左、右、上、下、居中)。

适用场景:复杂精准定位页面,例如登录页 logo、输入框、按钮错落排版,不规则卡片布局。

特点:自由度最高,适合无法用 Row/Column 简单实现的不规则界面。

4. 层叠布局 Stack

组件标识:Stack()

排列规则:所有子组件在同一坐标位置层层堆叠,代码后书写的组件会覆盖在先写组件上方。

适用场景:

轮播图底部小圆点指示器;

图片上方叠加文字水印 / 标题;

弹窗浮层、遮罩层;

最简示例代码(图片叠加文字):

ets

Stack(){

Image($r("app.media.school"))

.width("100%")

.height(180)

Text("校园风光 ")

.fontSize(22)

.fontColor(Color.White)

}

5. 弹性布局 Flex

组件标识:Flex()

排列规则:可自由切换 水平 / 垂直主轴方向,支持子组件自动换行、自动均分剩余空间,兼具 Row 与 Column 能力,是自适应页面首选布局。

核心控制属性:

.direction(FlexDirection.Row):水平排列;

.direction(FlexDirection.Column):垂直排列;

.wrap(FlexWrap.Wrap):子组件自动换行;

适用场景:多设备自适应页面、多标签自动换行、商品网格布局。

三、布局开发常见易错点

报错:多个根布局

错误写法:

ets

build(){

Column(){ Text("内容") }

Row(){ Text("按钮") }

}

解决:将其中一个布局作为根容器,把另一个布局嵌套进内部。

组件超出屏幕显示不全

给根布局添加width("100%")铺满屏幕宽度,搭配padding控制边距,避免内容贴边。

四、总结

五种布局各有专属使用场景,开发页面时优先选择Column、Row完成基础排版;遇到叠加效果使用Stack;自适应多组件换行使用Flex;需要精准不规则定位时使用RelativeContainer。所有页面必须严格遵守单一根布局规则,通过嵌套组合完成全部 UI 开发。

http://www.jsqmd.com/news/1067432/

相关文章:

  • 如何高效使用B站会员购抢票工具:新手到专家的完整实战指南
  • 推荐几个适合初学者的Python自动化脚本案例
  • Token经济学:从“白菜价”到“集体涨价”,AI算力如何完成惊天逆转?
  • ArkUI组件
  • 别再两眼一抹黑了:打破四大平行宇宙,看透 git add 的“多重人格”
  • 2026年天津高考志愿填报须知(二)
  • 私有化部署音视频系统EasyDSS,构建校园专属一体化融媒体视频服务平台
  • 深圳口碑好的饭堂承包服务商
  • 自助终端触摸显示一体机选型指南:从场景需求到实战避坑
  • 数字孪生项目案例 | 科技风工厂可视化
  • JAVA练习270-接雨水
  • Privado:开源数据流检测架构深度解析与合规性优化实践
  • 数字孪生管网末端执行单元:智能照明如何成为平台指令的最后一里
  • 喜讯!泰克尼康参编《宇航级民用食品安全要求》团体标准正式发布实施!
  • 超越参数迷思:AI时代的“数字镜像”与人类思想建设
  • Buzz:终极隐私保护的本地音频转录工具,完全离线运行![特殊字符]️
  • 如何用SiYuan开源知识管理软件重构你的思考方式:完整使用指南
  • 柔性负荷调控:可中断负荷与需求响应技术
  • 解锁Windows远程桌面多用户连接的终极解决方案:RDP Wrapper配置详解
  • 防晒工作服衬衫
  • TDengine 时序数据库实战笔记(20260622)
  • 已抓取未编入索引处理 GSC:AI写的文章被嫌弃?3招二次优化教你抢救
  • 第03章|分而治之:Sub-Agents 的核心概念与应用价值
  • ⑨番外篇II,FastLLM——老卡也能跑满血DeepSeek
  • AI+产业落地:从试点尝鲜到价值闭环的六大场景
  • 南宁儿童涂氟亲测2026年6月分享
  • 2048游戏模拟
  • 安全组网热门品牌推荐
  • .splat文件是什么?如何优化.splat文件实现流畅加载?
  • 法奥钟表零件自动组装,微米级精密对位,保障走时准确性