登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Ro ...
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
[ 复制链接 ]
慢秤
2025-10-5 19:00:06
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
大家好,我是潘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
鸿蒙
应用开发
入门
实战
相关帖子
PHP 值对象实战指南:避免原始类型偏执
消息队列从入门到跑路,保姆级教程!傻子可懂
GEO优化实战指南2025:六大服务商核心能力全景对比与选型策略
MAF快速入门(7)工作流的状态共享
Python环境管理利器Conda:从入门到避坑实战指南
JS逆向-反调试分析&debuger执行&条件断点&替换文件执行
Spring AI Alibaba 入门指南
JS逆向-混淆加密-识别&还原-Eval&JSFuck&JSJiaMi案例
日本股票 API 对接实战指南(实时行情与 IPO 专题)
FFmpeg 内存输入&输出
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
PHP 值对象实战指南:避免原始类型偏执
0
405
宁觅波
2025-12-17
业界
消息队列从入门到跑路,保姆级教程!傻子可懂
1
19
遏筒煽
2025-12-17
安全
GEO优化实战指南2025:六大服务商核心能力全景对比与选型策略
0
568
裴涛
2025-12-17
业界
MAF快速入门(7)工作流的状态共享
0
82
兼罔
2025-12-18
业界
Python环境管理利器Conda:从入门到避坑实战指南
0
567
迭婵椟
2025-12-18
业界
JS逆向-反调试分析&debuger执行&条件断点&替换文件执行
0
733
殳世英
2025-12-18
科技
Spring AI Alibaba 入门指南
0
734
靳谷雪
2025-12-18
业界
JS逆向-混淆加密-识别&还原-Eval&JSFuck&JSJiaMi案例
0
456
纪晴丽
2025-12-19
安全
日本股票 API 对接实战指南(实时行情与 IPO 专题)
0
226
甄婉丽
2025-12-19
安全
FFmpeg 内存输入&输出
0
14
劳欣笑
2025-12-21
回复
(4)
姘轻拎
2025-10-14 10:05:25
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
益竹月
2025-11-11 11:22:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
丰江
2025-11-27 08:39:59
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
粉押淫
2025-12-2 23:14:17
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
慢秤
2025-12-2 23:14:17
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9950
查看更多
今日好文热榜
758
监控指标与容量预警——延迟、命中率、慢查
668
2026 年别墅防水服务商 TOP5 推荐:高端住
960
MAUI库推荐二:MPowerKit
959
.NET10 New feature 新增功能介绍-JIT编译
402
报考陪诊师选守嘉陪诊的理由
271
C#AI系列(7):从零开始LLM之Tokenizer实现
283
C#AI系列(7):从零开始LLM之Tokenizer实现
824
Pytest 测试用例自动生成:接口自动化进阶
848
一天一个Python库:NumPy - 科学计算的基石
14
FFmpeg 内存输入&输出
744
一文读懂RAG架构如何助力AI
499
一文读懂RAG架构如何助力AI
547
ROS2之TF介绍
399
SW 随笔 001 — InlineArray 带你飞(Since
693
当遇见 CatchAdmin V5-模块化设计重新定义
494
【有手就行】SWIFT:花20分钟把大模型的名
562
论文速读记录 | 2025.12(2)
376
浮点数的本质:为什么计算机无法精确表示0.
730
Flink源码阅读:如何生成JobGraph
931
Python 潮流周刊#132:30 年 Python 自由职