鸿蒙中的九种布局概述

鸿蒙中的九种布局概述

概述

鸿蒙开发中包含就种布局,分别为线性布局、层叠布局、弹性布局、相对布局、栅格布局、媒体布局、列表、网格、轮播。

线性布局

线性布局通过Row和Column进行构建,是其他布局的基础。其中Row是水平方向排列,Column是垂直方向上排列。

Row示意图:

Column示意图

基本概念

容器布局:具有布局能力的容器组件。

布局子元素:被布局容器包括的元素。

主轴:线性布局在布局方向上的轴线,例如水平布局(Row)的主轴是水平方向,Column的主轴是垂直方向。

交叉轴:垂直与主轴的轴线。

间距:布局子元素的间距,用关键字space标记,如图Column的示意图。

语法

1、声明一个垂直线性布局,子元素间距为20,宽度充满父容器。

Column({ space: 20 }) {

  //子元素区域

}.width('100%')

2、声明一个水平线性布局,子元素间距为20,宽度充满父容器。

Row({ space: 20 }) {

  //子元素区域

}.width('100%')

属性

justifyContent

justifyContent属性用于设置子元素在容器主轴上的排列方式。

下面以垂直方向(Column)的线性布局为例,在布局内部再放三个子元素,观察三个子元素的排列方式。

Column() {

  Column() {

  }.width('80%').height(50).backgroundColor(0xF5DEB3)

  Column() {

  }.width('80%').height(50).backgroundColor(0xD2B48C)

  Column() {

  }.width('80%').height(50).backgroundColor(0xF5DEB3)

}.width('100%').height(300).backgroundColor('rgb(242,242,242)')

如上代码,在不设置justifyContent属性时,默认从上到下依次排列。

justifyContent(FlexAlign.Start)

默认的排列方式,元素在垂直方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

justifyContent(FlexAlign.Center)

元素在垂直方向中心对齐,第一个元素与行首的距离与最后一个元素与行尾距离相同

justifyContent(FlexAlign.End)

元素在垂直方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐

justifyContent(FlexAlign.SpaceBetween)

垂直方向均匀分配元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。

justifyContent(FlexAlign.SpaceAround)

垂直方向均匀分配元素,相邻元素之间距离相同。第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。

justifyContent(FlexAlign.SpaceEvenly)

垂直方向均匀分配元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样

alignItems

设置子元素在交叉轴上的对齐方式,其中Column取值为HorizontalAlign,Row取值为VerticalAlign。

下面仍以垂直方向(Column)的线性布局为例,在布局内部再放三个子元素,观察三个子元素的排列方式。

HorizontalAlign.Start

子元素在水平方向左对齐

HorizontalAlign.Center

子元素在水平方向居中对齐

HorizontalAlign.End

子元素在水平方向右对齐

层叠布局

层叠布局使用Stack进行定义,StackLayout包裹的子组件可以重叠和组件位置定位,默认情况下后一个子元素覆盖前一个子元素,使用zIndex属性可以设置层级顺序,使用场景有广告和卡片层叠效果等。

语法

Stack({alignContent: Alignment.枚举 }) {

//书写子组件

  }.width('100%').height(150)

对齐方式

Stack组件通过alignContent参数设置子组件的相对位置,支持九中对齐方式。

弹性布局

弹性布局使用Flex进行定义,提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。

基本概念

主轴:Flex组件布局方向的轴线,子元素默认沿着主轴排列。主轴开始的位置称为主轴起始点,结束位置称为主轴结束点

交叉轴:垂直于主轴方向的轴线。交叉轴开始的位置称为交叉轴起始点,结束位置称为交叉轴结束点

(引用自官网)

语法

Flex({ direction: FlexDirection.方向}) {

  Text('1').width('33%').height(50).backgroundColor(0xF5DEB3)

  Text('2').width('33%').height(50).backgroundColor(0xD2B48C)

  Text('3').width('33%').height(50).backgroundColor(0xF5DEB3)

}

参数

direction

决定主轴的方向,从而控制子组件的排列方向,使用FlexDirection中的属性确定

wrap

布局换行:控制当子元素主轴尺寸之和大于容器主轴尺寸时,Flex是单行布局还是多行布局,在多行布局时,通过交叉轴方向,确认新行堆叠方向。使用FlexWrap中的值进行确定。

justifyContent

主轴方向的对齐方式,通过FlexAlign进行确定。

alignItems

交叉轴上的对齐方式,通过ItemAlign进行确定。

alignContent

内容对齐,设置子组件各行在交叉轴剩余空间内的对齐方式,只在多行的flex布局中生效

子组件属性

alignSelf

设置子组件在父容器交叉轴的对齐格式,且会覆盖Flex布局容器中alignItems配置,使用ItemAlign中的值。

flexBasis

自适应拉伸,在弹性布局父组件尺寸不够大的时候,通过设置子组件的相关属性确定在父容器的占比,达到自适应布局能力。

相对布局

相对布局支持基于锚点做相对位置布局,用于对容器内部的子元素设置相对位置关系。通过RelativeContainer进行定义。

基本概念

锚点:通过锚点设置当前元素基于哪个元素确定位置。

对齐方式:通过对齐方式,设置当前元素是基于锚点的上中下对齐,还是基于锚点的左中右对齐。

语法

RelativeContainer() {

  子组件()

    // 添加其他属性

    .属性({

      参数: { 参数: '锚点ID', 对齐方式 }

    })

    .id("当前组件ID")

}

栅格布局

主要用于屏幕适配,使用GridRow和GridCol联合使用,相对复杂,请查看专题介绍。

媒体查询

媒体查询可根据不同设备类型或同设备不同状态修改应用的样式,是响应式设计的核心。

主要用于以下两种场景:

1、针对设备和应用的属性信息(比如显示区域、深浅色、分辨率),设计出相匹配的布局。2、当屏幕发生动态改变时(比如分屏、横竖屏切换),同步更新应用的页面布局。

获取设备的相信信息,配合其他布局方式,用于对用户展示不同的布局。

列表

当内容超过屏幕大小时,提供滚动功能。使用List组件和ListItemGroup和ListItem配合使用。

网格布局

网格布局是由“行”和“列”分割的单元格所组成,使用Grid容器组件和子组件GridItem配合使用,使用场景有九宫格图片展示、日历、计算器等。

轮播

Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示。使用Swiper进行构建。

 本文档仅介绍各布局的作用,详细用法,可关注公众号“浮萍公社”,回复“鸿蒙布局专题”,获取详细使用方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/408397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电路设计(25)——4位数字频率计的multisim仿真及PCB设计

1.设计要求 使用4位数码管,显示输入信号的频率。完成功能仿真后,用AD软件,画出原理图以及PCB。 2.电路设计 输入信号的参数为: 可见,输入为168HZ,测量值为170HZ,误差在可接受的范围内。 3.PCB设…

Jenkins解决Host key verification failed (2)

Jenkins解决Host key verification failed 分析原因情况 一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免…

【Java程序设计】【C00299】基于Springboot的仓库管理系统(有论文)

基于Springboot的仓库管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的仓库管理系统,本系统有管理员角色权限; 系统整体功能有:个人信息管理、仓库管理、物资管理、物资…

matplotlib子图绘制

文章目录 子图组合网格布局GridSpec matplotlib教程: 初步 子图 从绘图流程出发,【plt】图像有三个层级,依次是窗口、坐标系以及图像。在一个坐标系中可以有多条曲线,即表示多个图像;相应地在一个窗口中,…

文心一言 VS 讯飞星火 VS chatgpt (201)-- 算法导论15.2 6题

六、用go语言,证明:对 n 个元素的表达式进行完全括号化,恰好需要 n-1 对括号。 文心一言,代码正常运行: 在Go语言中,证明对n个元素的表达式进行完全括号化恰好需要n-1对括号,可以通过数学归纳…

将yolov8权重文件转为onnx格式并在c#中使用

yolo模型转ONNX 在yolov8中,我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类,使用pip安装ultralytics库,然后执行下面python代码 from ultralytics import YOLO# 加载YOLOv8模型 model YOLO("best.pt&q…

听力障碍的康复训练方法有哪些?

康复小知识 回声复语教育科技研究院 知识分享 听力障碍/概况 听力障碍是指“由于各种原因导致双耳不同程度的永久性听力障碍,听不到或听不清周围环境及言语声,以致影响日常生活和社会参与”。 聋儿的语言器官本身并不存在问题,通过现代科学…

数据结构链表力扣例题AC(3)——代码以及思路记录

160. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 AC写法一 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//思…

利用LaTex批量将eps转pdf、png转eps、eps转png、eps转svg、pdf转eps

1、eps转pdf 直接使用epstopdf命令(texlive、mitex自带)。 在cmd中进入到eps矢量图片的目录,使用下面的命令: for %f in (*.eps) do epstopdf "%f" 下面是plt保存eps代码: import matplotlib.pyplot as…

嵌入式中数据结构二叉树详解与实现

树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。在面试环节中,二叉树也是必考的模块。本文主要讲二叉树操作的相关知识,梳理面试常考的内容。请大家跟随小编一起来复习吧。 本篇针对面试中常见的二叉树操作作个总结: 前…

分享从零开始学习网络设备配置--任务5.1 组建直连式二层无线局域网

任务要求 (1)组建直连式二层无线局域网,网络拓扑图如图 (3)路由器、交换机和AC等网络设备端口IP地址规划如表 (4)组建直连式二层无线局域网,配置AP上线、WLAN业务参数和实现STA能正…

程序员的副业发展

前言 之前总有小伙伴问我,现在没有工作,或者想在空闲时间做一些程序员兼职,怎么做,做什么,能赚点外快 因为我之前发别的文章的时候有捎带着说过一嘴我做一些副业,这里就说一下我是怎么做的,都…

es6 中的生成器 generator / 迭代器 / async /await 到底是个啥,使用场景

生成器 generator 到底是个啥 是一个函数 可以用来遍历数据结构是解决异步编程的一种方案进行数据流的生成和控制协程和状态机返回一个生成器对象/可迭代对象 生成器对象: 生成器对象是由生成器函数返回的对象,它符合迭代器协议(Iterator Pr…

异步框架Celery在Django中的运用

参考博客:https://www.cnblogs.com/pyedu/p/12461819.html 参考视频:01 celery的工作机制_哔哩哔哩_bilibili 定义:简单灵活、处理大量消息的分布式系统,专注于实时处理异步队列,支持任务调度 主要架构: …

【C++那些事儿】C++入门 | 命名空间 | 缺省参数 | 引用 | 内联函数 | auto关键字 | 范围for循环 | nullptr

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C那些事儿 🌅 有航道的人,再渺小也不会迷途。 文章目录 前言1. C关键字(C98)2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺…

【Linux基础】vim、常用指令、组管理和组权限

Linux基础 1、目录结构2、vi和vim3、常用指令运行级别找回密码帮助指令时间日期指令搜索查找文件目录操作磁盘管理指令压缩和解压缩 4、组管理和组权限用户操作指令权限 1、目录结构 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”&a…

StarRocks——滴滴OLAP的技术实践与发展方向

原文大佬的这篇StarRocks实践文章整体写的很深入,介绍了StarRocks数仓架构设计、物化视图加速实时看板、全局字典精确去重等内容,这里直接摘抄下来用作学习和知识沉淀。 目录 一、背景介绍 1.1 滴滴OLAP的发展历程 1.2 OLAP引擎存在的痛点 1.2.1 运维…

K线实战分析系列之十:市场进入犹豫不定状态——孕线形态

K线实战分析系列之十:市场进入犹豫不定状态——孕线形态 一、重要反转形态二、其他反转形态三、孕线形态四、孕线形态和吞没形态的区别五、十字孕线形态六、总结孕线形态 一、重要反转形态 伞形线吞没形态乌云盖顶刺透形态启明星形态黄昏星形态十字启明星与十字黄昏…

Java之线程池:线程池常用类、接口;线程池执行流程,配置参数,分类

线程池 什么是线程池? 线程池:一种基于池化思想管理和使用线程的机制 线程池常用类和接口 ExecutorService接口:进行线程池的操作访问Executors类:创建线程池的工具类ThreadPoolExecutor及其子类:封装线程池的核心参…

K线实战分析系列之九:顶底判断——流星和倒锤子线

K线实战分析系列之九:顶底判断——流星和倒锤子线 一、流星线二、倒锤子线三、总结流星形态和倒锤子形态 一、流星线 主要特征是实体比较小,位于低端位置,带着长上影线,就像流星划过天际时,拖着一个长长的尾巴&#xf…