登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Ro ...
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
[ 复制链接 ]
慢秤
2025-10-5 19:00:06
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
一、Column&Row组件及线性布局
1.1 线性布局概述
线性布局(LinearLayout)是开发中最常用的布局,可通过容器组件Column和Row构建,其子组件会在垂直或者水平方向上进行线性排列,具体效果如下图所示
列排列
行排列
说明
:
Column
和
Row
容器均有两个轴线,分别是
主轴
和
交叉轴
主轴
:线性布局容器在布局方向上的轴线,
Row
容器
主轴为横向
,
Column
容器
主轴为纵向
。
交叉轴
:垂直于主轴方向的轴线。
Row
容器
交叉轴为纵向
,
Column
容器
交叉轴为横向
。
1.2 Column&Row参数
Column
和
Row
容器的参数类型为{space?: string | number},开发者可通过space属性调整子元素在主轴方向上的间距,效果如下
列间隔
行间隔示例代码:
pages目录下新建layout/linear目录,新建SpacePage.ets文件
@Entry
@Component
// 线性布局
struct SpacePage {
build() {
// 通过space属性调整子元素在主轴方向上的间距
Column({ space: 150 }) {
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
}.width('100%')
.height('100%')
.backgroundColor('#eeeeee')
.justifyContent(FlexAlign.Center)
}
}
复制代码
1.3 常用属性
1.3.1 主轴方向排列方式
子元素沿主轴方向的排列方式可以通过justifyContent()方法进行设置,其参数类型为枚举类型FlexAlign,可选的枚举值有
示例代码:
pages/layout/linear目录,新建JustifyContent.ets文件
@Entry
@Component
struct AlignItemsPage {
build() {
Column({ space: 2 }) {
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
}.width('100%')
.height('100%')
// 子元素沿主轴方向的排列方式
// .justifyContent(FlexAlign.Center)
// .justifyContent(FlexAlign.Start)
// .justifyContent(FlexAlign.End)
// .justifyContent(FlexAlign.SpaceBetween)
// .justifyContent(FlexAlign.SpaceAround)
.justifyContent(FlexAlign.SpaceEvenly)
}
}
复制代码
1.3.2 交叉轴方向对齐方式
子元素沿交叉轴方向的对齐方式可以通过alignItems()方法进行设置,其参数类型,对于Column容器来讲是HorizontalAlign,对于Row容器来讲是VerticalAlign,两者都是枚举类型,可选择枚举值也都相同,具体内容如下
示例代码
pages/layout/linear目录,新建AlignItemsPage.ets文件
@Entry
@Component
// 线性布局交叉轴排列方式
struct AlignItemsPage {
build() {
Column({ space: 2 }) {
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
Row()
.backgroundColor(Color.Green)
.width('80%')
.height(70)
}.width('100%')
.height('100%')
// 子元素沿交叉轴方向的对齐方式
// 对于Column容器来讲是HorizontalAlign,对于Row容器来讲是VerticalAlign,两者都是枚举类型,可选择枚举值也都相同
// .alignItems(HorizontalAlign.Start)
// .alignItems(HorizontalAlign.Center)
.alignItems(HorizontalAlign.End)
}
}
复制代码
二、使用技巧
2.1 Blank组件
Blank
可作为
Column
和
Row
容器的子组件,该组件不显示任何内容,并且会始终充满容器主轴方向上的剩余空间,效果如下:
示例代码:
拷贝icon_bluetooth.png到目录resources/base/media
pages/layout/linear目录下新建BlankPage.ets
@Entry
@Component
struct BlankPage {
build() {
Column({ space: 50 }) {
Row() {
Image($r('app.media.icon_bluetooth'))
.width(30)
.height(30)
Text('蓝牙')
.fontSize(20)
.margin({ left: 5 })
Blank()
Toggle({ type: ToggleType.Switch })
}
.width('90%')
.height(60)
.backgroundColor(Color.White)
.padding({ left: 10, right: 10 })
.borderRadius(15)
.shadow({ radius: 10 })
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.backgroundColor('#f2f2f2')
}
}
复制代码
2.2 layoutWeight属性
layoutWeight属性可用于
Column
和
Row
容器的子组件,其作用是配置子组件在主轴方向上的尺寸权重。配置该属性后,子组件沿主轴方向的尺寸设置(width或height)将失效,具体尺寸根据权重进行计算,计算规则如下图所示:
示例代码:
pages/layout/linear目录下新建LayoutWeightPage.ets
@Entry
@Component
// layoutWeight属性
struct LayoutWeightPage {
build() {
// layoutWeight 配置子组件在主轴方向上的尺寸权重。
// 配置该属性后,子组件沿主轴方向的尺寸设置(width或height)将失效,具体尺寸根据权重进行计算
Column() {
//Header:高度60vp
Row() {
Text('Header')
.fontSize(30)
}.backgroundColor('#66008000')
.justifyContent(FlexAlign.Center)
.height(60)
.width('100%')
//Content:充满剩余空间
Row() {
Text('Content')
.fontSize(30)
}
.backgroundColor('#66ffa200')
.justifyContent(FlexAlign.Center)
.width('100%')
// .height(200)
.layoutWeight(3)
// Footer:高度60vp
Row() {
Text('Footer')
.fontSize(30)
}
.backgroundColor('#660e9fba')
.justifyContent(FlexAlign.Center)
.width('100%')
.height(60)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.backgroundColor('#f2f2f2')
}
}
复制代码
《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
amp
鸿蒙
应用开发
入门
实战
相关帖子
定制化 Live555 实战:按需开发低耗 RTSP 服务器,完美适配 C# 项目
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
Flask 应用部署实战:Nginx 反向代理配置指南
【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索
JVM内存、GC与JConsole实战全解析:从理论到可视化的完整指南
DMP学习路线之入门
扣子Coze实战:智能体(Agent)1分钟自动仿写公众号爆文,一键自动发布
JVM内存、GC与JConsole实战全解析
数字电路模拟程序&课堂测验Blog
Flask路由入门指南:从基础定义到优先级与动态路由转换器
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
定制化 Live555 实战:按需开发低耗 RTSP 服务器,完美适配 C# 项目
0
241
敕码
2025-12-07
业界
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
0
197
喙审
2025-12-10
业界
Flask 应用部署实战:Nginx 反向代理配置指南
1
926
盒礁泅
2025-12-11
安全
【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索
0
471
杓疠?
2025-12-11
业界
JVM内存、GC与JConsole实战全解析:从理论到可视化的完整指南
0
823
于映雪
2025-12-12
安全
DMP学习路线之入门
0
609
济曝喊
2025-12-12
业界
扣子Coze实战:智能体(Agent)1分钟自动仿写公众号爆文,一键自动发布
0
17
高小雨
2025-12-13
业界
JVM内存、GC与JConsole实战全解析
0
695
洫伍俟
2025-12-13
安全
数字电路模拟程序&课堂测验Blog
0
213
吕梓美
2025-12-15
业界
Flask路由入门指南:从基础定义到优先级与动态路由转换器
0
307
扒钒
2025-12-15
回复
(4)
姘轻拎
2025-10-14 10:05:25
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
益竹月
2025-11-11 11:22:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
丰江
2025-11-27 08:39:59
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
粉押淫
2025-12-2 23:14:17
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
安全
代码
签约作者
程序园优秀签约作者
发帖
慢秤
2025-12-2 23:14:17
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
953
Open-AutoGLM项目衍生自研app测试思路
176
.Net-Avalonia学习笔记(目录)
435
PoloAPI 绘画接口全攻略:从参数详解到实战
143
剑指offer-50、数组中重复的数字
178
嫌 Google 的 TCREI 太复杂?RACE 会更适合
975
Spring Boot中HTTP请求参数转换和请求体JSO
530
AI手机的“简单替换陷阱”与Hadoop、Cloude
474
用C#重现Gin风格:极简、效率与可扩展性设
241
AI运动识别插件-APP版新版特性速览
776
NetBox 自动化导入资产 - IP地址
80
在调度的花园里面挖呀挖
766
ACP:让 AI 编程工具配置从此告别碎片化 —
862
画高保真原型图用什么软件?产品经理与设计
67
企业数字化转型如何破局?看这三大招
752
解决 iOS 上 Swiper 滑动图片闪烁问题:原
425
OpenCV (C++) 提速技巧(以Haar小波变换为
208
Claude Code 使用 Skills
671
资源总是不够用?这次,我用一套系统盘活了
977
UniEdit:首个大型开放域大模型知识编辑基
575
Karmada v1.16 版本发布!支持多模板工作负