登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Ro ...
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
[ 复制链接 ]
慢秤
5 天前
大家好,我是潘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
鸿蒙
应用开发
入门
实战
相关帖子
多Agent协作入门:基于A2A协议的Agent通信(上)
从零开始学Flink:实时流处理实战
NDK开发与实践(入门篇·微课视频版)
PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务
多Agent协作入门:基于A2A协议的Agent通信(中)
鸿蒙应用开发从入门到实战(十七):ArkUI组件List&列表布局
SQL优化实战:标量子查询改写外连接的真实案例
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
多Agent协作入门:基于A2A协议的Agent通信(上)
0
733
厂潺
2025-10-07
业界
从零开始学Flink:实时流处理实战
0
988
纣捎牟
2025-10-07
业界
NDK开发与实践(入门篇·微课视频版)
0
650
吉娅寿
2025-10-08
业界
PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务
0
356
边书仪
2025-10-09
业界
多Agent协作入门:基于A2A协议的Agent通信(中)
0
944
豹筒生
2025-10-09
业界
鸿蒙应用开发从入门到实战(十七):ArkUI组件List&列表布局
0
489
拍棹
2025-10-09
业界
SQL优化实战:标量子查询改写外连接的真实案例
0
165
靳谷雪
2025-10-10
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
慢秤
5 天前
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9999501
dage888
999994
富账慕
10013
4
匝抽
9986
5
孙淼淼
9992
6
筒濂
9985
7
柴古香
9993
8
凌彦慧
9991
9
崔瑜然
9984
10
慢秤
9979
查看更多