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

HarmonyOS鸿蒙学习基础篇 - Column/Row 组件

前言

  Row和Column组件是线性布局容器,用于按照垂直或水平方向排列子组件。Row表示沿水平方向布局的容器,而Column表示沿垂直方向布局的容器。这些容器具有许多属性和方法,可以方便地管理子组件的位置、大小、间距和对齐方式。例如,可以设置容器内部的子组件之间的间距(space属性),以及子组件在主轴(水平或垂直方向)和交叉轴上的对齐方式。

Column组件

Column(value?: {space?: string | number})

参数解释:

参数名

参数类型

必填

参数描述

space

string | number

纵向布局元素垂直方向间距。

从API version 9开始,space为负数或者justifyContent设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时不生效。

默认值:0

说明:

可选值为大于等于0的数字,或者可以转换为数字的字符串。

Column组件支持很多通用属性,如:width、height等,还支持如下属性:

名称

参数类型

描述

alignItems

HorizontalAlign

设置子组件在水平方向上的对齐格式。

默认值:HorizontalAlign.Center

从API version 9开始,该接口支持在ArkTS卡片中使用。

justifyContent8+

FlexAlign

设置子组件在垂直方向上的对齐格式。

默认值:FlexAlign.Start

从API version 9开始,该接口支持在ArkTS卡片中使用。

示例

以下代码定义了一个名为 ColumnExample 的组件,用于展示 Column 布局的不同特性,包括子元素间距、对齐方式和背景颜色。

@Entry  // 使用 @Entry 装饰器标识这是一个入口组件。
@Component  // 使用 @Component 装饰器定义一个新组件。
struct ColumnExample {  // 定义名为 ColumnExample 的结构体,代表这个组件。build() {  // 定义 build 方法来构建UI。Column({ space: 5 }) {  // 创建一个 Column 组件,设置子元素间的垂直间距为5。Text('space').width('90%')  // 创建一个 Text 组件,说明接下来的内容与space属性相关。Column({ space: 5 }) {  // 创建一个内部 Column 组件,再次设置子元素间的垂直间距为5。Column().width('100%').height(30).backgroundColor(0xAFEEEE)  // 创建一个 Column 子组件,设置宽度、高度和背景颜色为浅蓝色。Column().width('100%').height(30).backgroundColor(0x00FFFF)  // 创建另一个 Column 子组件,设置宽度、高度和背景颜色为青色。}.width('90%').height(100).border({ width: 1 })  // 为这个内部 Column 设置宽度、高度和边框。// 设置子元素水平方向对齐方式Text('alignItems(Start)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与水平起始对齐相关。Column() {  // 创建一个 Column 组件。Column().width('50%').height(30).backgroundColor(0xAFEEEE)  // 创建一个子 Column,设置宽度、高度和背景颜色为浅蓝色。Column().width('50%').height(30).backgroundColor(0x00FFFF)  // 创建另一个子 Column,设置宽度、高度和背景颜色为青色。}.alignItems(HorizontalAlign.Start).width('90%').border({ width: 1 })  // 为这个 Column 设置子元素水平起始对齐、宽度和边框。Text('alignItems(End)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与水平结束对齐相关。Column() {  // 创建一个 Column 组件。Column().width('50%').height(30).backgroundColor(0xAFEEEE)  // 创建子 Column 组件,设置同上。Column().width('50%').height(30).backgroundColor(0x00FFFF)  // 创建另一个子 Column 组件,设置同上。}.alignItems(HorizontalAlign.End).width('90%').border({ width: 1 })  // 为这个 Column 设置子元素水平结束对齐、宽度和边框。Text('alignItems(Center)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与水平居中对齐相关。Column() {  // 创建一个 Column 组件。Column().width('50%').height(30).backgroundColor(0xAFEEEE)  // 创建子 Column 组件,设置同上。Column().width('50%').height(30).backgroundColor(0x00FFFF)  // 创建另一个子 Column 组件,设置同上。}.alignItems(HorizontalAlign.Center).width('90%').border({ width: 1 })  // 为这个 Column 设置子元素水平居中对齐、宽度和边框。// 设置子元素垂直方向的对齐方式Text('justifyContent(Center)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与垂直居中对齐相关。Column() {  // 创建一个 Column 组件。Column().width('90%').height(30).backgroundColor(0xAFEEEE)  // 创建子 Column 组件,设置宽度、高度和背景颜色为浅蓝色。Column().width('90%').height(30).backgroundColor(0x00FFFF)  // 创建另一个子 Column 组件,设置宽度、高度和背景颜色为青色。}.height(100).border({ width: 1 }).justifyContent(FlexAlign.Center)  // 为这个 Column 设置高度、边框和子元素垂直居中对齐。Text('justifyContent(End)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与垂直结束对齐相关。Column() {  // 创建一个 Column 组件。Column().width('90%').height(30).backgroundColor(0xAFEEEE)  // 创建子 Column 组件,设置同上。Column().width('90%').height(30).backgroundColor(0x00FFFF)  // 创建另一个子 Column 组件,设置同上。}.height(100).border({ width: 1 }).justifyContent(FlexAlign.End)  // 为这个 Column 设置高度、边框和子元素垂直结束对齐。}.width('100%').padding({ top: 5 })  // 为最外层 Column 设置宽度和顶部内边距。}
}

代码预览:

Row组件

Row(value?:{space?: number | string })

参数解释:

参数名

参数类型

必填

参数描述

space

string | number

横向布局元素间距。

从API version 9开始,space为负数或者justifyContent设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时不生效。

默认值:0,单位vp

说明:

可选值为大于等于0的数字,或者可以转换为数字的字符串。

Row属性:

名称

参数类型

描述

alignItems

VerticalAlign

设置子组件在垂直方向上的对齐格式。

默认值:VerticalAlign.Center

从API version 9开始,该接口支持在ArkTS卡片中使用。

justifyContent8+

FlexAlign

设置子组件在水平方向上的对齐格式。

默认值:FlexAlign.Start

从API version 9开始,该接口支持在ArkTS卡片中使用。

示例

如下代码定义了一个名为 RowExample 的组件,用于展示 Row 布局的不同特性,包括子元素间距、垂直对齐方式和水平对齐方式。

@Entry  // 使用 @Entry 装饰器标识这是一个入口组件。
@Component  // 使用 @Component 装饰器定义一个新组件。
struct RowExample {  // 定义名为 RowExample 的结构体,代表这个组件。build() {  // 定义 build 方法来构建UI。Column({ space: 5 }) {  // 创建一个 Column 组件,设置子元素间的垂直间距为5。Text('space').width('90%')  // 创建一个 Text 组件,说明接下来的内容与space属性相关。Row({ space: 5 }) {  // 创建一个 Row 组件,设置子元素间的水平间距为5。Row().width('30%').height(50).backgroundColor(0xAFEEEE)  // 创建一个子 Row 组件,设置宽度、高度和背景颜色为浅蓝色。Row().width('30%').height(50).backgroundColor(0x00FFFF)  // 创建另一个子 Row 组件,设置宽度、高度和背景颜色为青色。}.width('90%').height(107).border({ width: 1 })  // 为这个 Row 设置宽度、高度和边框。// 设置子元素垂直方向对齐方式Text('alignItems(Bottom)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与垂直底部对齐相关。Row() {  // 创建一个 Row 组件。Row().width('30%').height(50).backgroundColor(0xAFEEEE)  // 创建子 Row 组件,设置同上。Row().width('30%').height(50).backgroundColor(0x00FFFF)  // 创建另一个子 Row 组件,设置同上。}.width('90%').alignItems(VerticalAlign.Bottom).height('15%').border({ width: 1 })  // 为这个 Row 设置垂直底部对齐、宽度、高度和边框。Text('alignItems(Center)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与垂直居中对齐相关。Row() {  // 创建一个 Row 组件。Row().width('30%').height(50).backgroundColor(0xAFEEEE)  // 创建子 Row 组件,设置同上。Row().width('30%').height(50).backgroundColor(0x00FFFF)  // 创建另一个子 Row 组件,设置同上。}.width('90%').alignItems(VerticalAlign.Center).height('15%').border({ width: 1 })  // 为这个 Row 设置垂直居中对齐、宽度、高度和边框。// 设置子元素水平方向对齐方式Text('justifyContent(End)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与水平结束对齐相关。Row() {  // 创建一个 Row 组件。Row().width('30%').height(50).backgroundColor(0xAFEEEE)  // 创建子 Row 组件,设置同上。Row().width('30%').height(50).backgroundColor(0x00FFFF)  // 创建另一个子 Row 组件,设置同上。}.width('90%').border({ width: 1 }).justifyContent(FlexAlign.End)  // 为这个 Row 设置水平结束对齐、宽度和边框。Text('justifyContent(Center)').width('90%')  // 创建一个 Text 组件,说明接下来的内容与水平居中对齐相关。Row() {  // 创建一个 Row 组件。Row().width('30%').height(50).backgroundColor(0xAFEEEE)  // 创建子 Row 组件,设置同上。Row().width('30%').height(50).backgroundColor(0x00FFFF)  // 创建另一个子 Row 组件,设置同上。}.width('90%').border({ width: 1 }).justifyContent(FlexAlign.Center)  // 为这个 Row 设置水平居中对齐、宽度和边框。}.width('100%')  // 为最外层 Column 设置宽度为100%。}
}

代码预览:

相关文章:

  • Vi 和 Vim 编辑器
  • 不等式的证明之一
  • 2023年哪个前端框架用的最多?
  • C++delete的使用/指针操作/内存/delete后该指针是否为空
  • vue-进阶语法(四)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第四天-ARM Linux编程之IIC与uart (物联技术666)
  • 蔚来面试解答
  • 【CV论文精读】【BEV感知】BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示
  • 倒计时59天
  • C/C++中的max函数如何使用?哪个头文件?多个数字可以用max吗?
  • 【蓝桥杯单片机入门记录】LED灯(附多个例程)
  • Debezium发布历史120
  • 【Qt】环境安装与初识
  • 蓝桥杯(Web大学组)2022国赛真题:用什么来做计算 A
  • coding持续集成构建环境自定义node版本
  • axios 和 cookie 的那些事
  • Centos6.8 使用rpm安装mysql5.7
  • Effective Java 笔记(一)
  • Electron入门介绍
  • Javascript基础之Array数组API
  • Java应用性能调优
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Node + FFmpeg 实现Canvas动画导出视频
  • Promise初体验
  • v-if和v-for连用出现的问题
  • 程序员最讨厌的9句话,你可有补充?
  • 分布式熔断降级平台aegis
  • 模型微调
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 学习笔记:对象,原型和继承(1)
  • 智能合约Solidity教程-事件和日志(一)
  • 【干货分享】dos命令大全
  • 积累各种好的链接
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​Linux·i2c驱动架构​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)MFC+openGL单文档框架glFrame
  • (4)STL算法之比较
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (差分)胡桃爱原石
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (强烈推荐)移动端音视频从零到上手(下)
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net中应用SQL缓存(实例使用)
  • /etc/fstab 只读无法修改的解决办法
  • :中兴通讯为何成功
  • @Autowired和@Resource装配