鸿蒙中的九种布局概述

news2025/1/17 1:14:56

鸿蒙中的九种布局概述

概述

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

线性布局

线性布局通过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进行构建。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Linux服务器上部署一个单机项目

目录 一、jdk安装 二、tomcat安装 三、MySQL安装 四、部署项目 一、jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2. 解压安装包 这里需要解压到usr/local目录下,在这里我新建一个文件夹保存解压后的文件 [r…

babylonjs入门模

基于babylonjs封装的一些功能和插件 ,希望有更多的小伙伴一起玩babylonjs; 欢迎加群:464146715 官方文档 中文文档 最小模版 ​ 代码如下: 在react中使用 import React, { FC, useCallback, useEffect, useRef, useState } f…

抖音视频提取软件怎么用|抖音数据抓取工具

针对用户获取抖音视频的需求,我们开发了一款功能强大的抖音视频提取软件,旨在帮助用户轻松获取他们感兴趣的视频内容。无需逐个复制链接,无需繁琐的下载步骤,我们的软件让抖音视频获取变得简单快捷。 使用我们的软件非常简单&…

使用免费的L53巧解Freenom域名失效问题

进入2月份以来,不少小伙伴纷纷收到Freenom提供的域名失效,状态由正常变成了Pending。 失效后,域名无法使用,免费的午餐没有了,而现在域名的价格也是水涨船高,真是XXX。很多做外贸的小伙伴表示 难 啊&#x…

谁是单身狗?——C语言刷题

创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 单身狗1 题述 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 例如: 数组中有:1 2 3 4 5 1 2 3 4&a…

spring注解驱动系列--Bean生命周期二

一、BeanPostProcessor执行流程 在bean生命周期中,当bean对象创建完了之后,会调用populateBean(beanName, mbd, instanceWrapper);给bean进行属性赋值,之后会调用initializeBean方法进行初始化,而BeanPostProcessor中的postProces…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个版…

【前端素材】推荐优质医院后台管理系统I-Health平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理和配置操…

算法练习-组合总和【回溯算法】(思路+流程图+代码)

难度参考 难度&#xff1a;困难 分类&#xff1a;回溯算法 难度与分类由我所参与的培训课程提供&#xff0c;但需 要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0…

相机姿态slovePnP

opencv slovePnP 物体的姿态 估计 物体的姿态&#xff08;位置和方向&#xff09; 通过已知的图像坐标点数组&#xff0c;和对应的世界坐标点数组&#xff0c;相机的内参&#xff0c;畸变参数&#xff0c;求解相机姿态&#xff0c;即旋转向量和平移向量&#xff0c; 例如&…

JSTL标签

JSTL标签 一、什么是JSTL标签&#xff1a; 随着J2EE瘦客户机技术JavaServer Pages(JSP)在过去几年中的流行&#xff0c;开发人员已经创建了许多自定义的JSP标记库。虽然很多标记库是为实现不同目标的而编写的&#xff0c;但它们往往也对迭代、条件及其它通用操作都提供了类似…

解决:“出现问题,Outlook 无法设置你的账户”

原文&#xff1a;https://blog.iyatt.com/?p14213 1 问题描述 Office 专业版 2024 预览版 在 Outlook 输入邮箱后无法进一步配置登录信息&#xff08;腾讯企业邮箱 Exchange 登录&#xff09; 2 解决方法 通过控制面板里的邮箱设置可以正常添加登录&#xff0c;而且能…

链表OJ题第二弹:环形链表和环形链表 II

前言 第一弹的链表题目比较基础&#xff0c;下面两道题目难度升级&#xff0c;可以先自己挑战一下&#xff0c;再来看解析。解析有图示和的文字&#xff0c;有助于你的理解。 1. 环形链表 &#xff08;1&#xff09;题目及示例 给定一个链表的头节点 head &#xff0c;返回…

C语言菜鸟入门·二维数组

C语言菜鸟入门数组简介-CSDN博客 目录 ​编辑 1. 二维数组 1.1 初始化二维数组 1.2 访问二维数组元素 1.3 示例演示 2. 传递数组给函数 2.1 形式参数是一个指针 2.2 形式参数是一个已定义大小的数组 2.3 形式参数是一个未定义大小的数组 2.4 实例演示 1. 二维…

Spring中关于事务的一些方方面面

事务隔离级别&#xff1a; 先了解一些事务隔离级别有哪些&#xff1a; 未提交读(Read Uncommitted)&#xff1a; 允许脏读&#xff0c;也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed)&#xff1a; 只能读取到已经提交的数据。Oracle等多数数据库默…

组态软件在物联网中的应用

随着物联网的快速发展&#xff0c;组态软件在物联网中的应用也越来越广泛。组态软件是一种用于创建和管理物联网系统的可视化工具&#xff0c;它能够将传感器、设备和网络连接起来&#xff0c;实现数据的采集、分析和可视化。本文将探讨组态软件在物联网中的应用&#xff0c;并…

通信入门系列——双边带信号、单边带信号、Hilbert变换

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、双边带信号 二、单边…

详细分析Pandas中的Series对象(附Demo)

目录 1. 问题所示2. 基本知识3. API Demo4. 示例Demo5. 彩蛋 1. 问题所示 从实战上手基础知识 一开始遇到这个Bug&#xff1a; TypeError: unsupported operand type(s) for -: str and float后面经了解执行减法运算时发生了错误&#xff0c;其中一个操作数是字符串类型&…

文献速递:GAN医学影像合成--用生成对抗网络生成 3D TOF-MRA 体积和分割标签

文献速递&#xff1a;GAN医学影像合成–用生成对抗网络生成 3D TOF-MRA 体积和分割标签 01 文献速递介绍 深度学习算法在自然图像分析中的成功近年来已被应用于医学成像领域。深度学习方法已被用于自动化各种耗时的手动任务&#xff0c;如医学图像的分割和分类&#xff08;G…

React18源码: Fiber树的初次创建过程图文详解

fiber树构造&#xff08;初次创建&#xff09; fiber树构造的2种情况&#xff1a; 1.初次创建 在React应用首次启动时&#xff0c;界面还没有渲染此时并不会进入对比过程&#xff0c;相当于直接构造一棵全新的树 2.对比更新 React应用启动后&#xff0c;界面已经渲染如果再次发…