鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
大家好,我是潘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+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局的更多相关文章
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
<ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...
- Python项目案例开发从入门到实战 - 书籍信息
Python项目案例开发从入门到实战 - 爬虫.游戏和机器学习(微课版) 作者:郑秋生 夏敏捷 清华大学出版社 ISBN:978-7-302-45970-5
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- Bootstrap入门(二十四)data属性
Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...
- Bootstrap入门(二十二)组件16:列表组
Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...
- Bootstrap入门(十四)组件8:媒体对象
Bootstrap入门(十四)组件8:媒体对象 这是一个抽象的样式,用以构建不同类型的组件,这些组件都具有在文本内容的左或右侧对齐的图片(就像博客评论或 Twitter 消息等). 1.基本样式 2. ...
- DVWA靶场实战(十四)——JavaScript
DVWA靶场实战(十四) 五.Java Script: 1.漏洞原理: 这里的JavaScript其实是JavaScript Attack也就是JS攻击.JavaScript是一种基于对象和事件驱动的 ...
- asp.net core跨平台开发从入门到实战文摘
第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
- 【ASP.NET Core快速入门】(十四)MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
前言 之前我们进行了MVC的web页面的Cookie-based认证实现,接下来的开发我们要基于之前的MvcCookieAuthSample项目做修改. MvcCookieAuthSample项目地址 ...
随机推荐
- C++ 标准函数 。abort & typeid
简介 abort() 使程序直接报core dump错误 typeid() 判断对象是否是同一个对象的时候使用,感觉类似js里面的type什么鬼来着 比如 dynamic_cast强制类型转换指针 i ...
- API自动化测试平台,RestCloud效率提升60%
RestCloud API自动化测试平台,可以对API进行编排实现复杂的测试场景.实现对API的自动化测试,并根据测试结果输出测试报告,全面提升API的测试效率:平台基于Web界面构建,同比使用pos ...
- c#运用ZeroMq发布订阅和RPC函数代理的优点结合成一个新的实用的通讯
想用ZeroMq的发布订阅者模式,又不想写一大串switch case? 想用RPC函数代理机制,又想多对多进行通讯? 下面就结合二者的优点重新封装一套通讯模块 一.先写ZeroMq的发布订阅这模式 ...
- 记一次nginx访问快捷方式指向的文件夹失败的排查解决过程
起因是项目上有一个文件域名,dns解析到linux系统的服务器上,有一个nginx服务反向代理了一个位于nas挂载盘内的文件目录,现在有一个新需求是让客户还是通过这个域名作为访问入口,访问同样位于na ...
- FastAPI后台任务:异步魔法还是同步噩梦?
扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/ 1. 后台任务基础概念与快速入门 ...
- bootstrapTable的使用及表格的导出
https://www.pudn.com/news/6278bf1977d3727348162d84.html 代码:bootstrap: bootstrap的使用示例.包括bootstrapTabl ...
- CAS 5.3.1系列之使用cas overlay搭建服务端(一)
一.CAS服务端搭建 1.1 CAS支持Http登录配置 CAS默认是要https的链接才能登录的,不过学习的话是可以先去掉https限制,本博客介绍的是基于Cas5.3.1的,之前改过4.0,4.2 ...
- RestTemplate的postForEntity方法传递数组,将集合转换成json字符串
public Object xxxx(List<Xxxx> xxxx) { HttpHeaders headers = new HttpHeaders(); HttpEntity<S ...
- MSP-FET430UIF烧写文件说明
MSP-FET430UIF烧写文件说明 目标板:MSP430FR6972 烧录工具:MSP-FET430UIF仿真器 烧录软件:Lite FET-Pro430 Elprotronic V3.4 烧录方 ...
- MCP Client 开发实战指南(Python版)
原文链接 资料 MCP 官方文档 https://modelcontextprotocol.io/introduction 各个 clients 对 MCP 的支持情况 https://modelco ...