鸿蒙开发-UI-布局

news2025/4/24 12:51:45

鸿蒙开发-序言

鸿蒙开发-工具

鸿蒙开发-初体验

鸿蒙开发-运行机制

鸿蒙开发-运行机制-Stage模型

鸿蒙开发-UI

鸿蒙开发-UI-组件

鸿蒙开发-UI-组件-状态管理

鸿蒙开发-UI-应用-状态管理

鸿蒙开发-UI-渲染控制

文章目录

前言

一、布局概述

1.布局结构

2.布局元素组成

3.布局分类

4.布局位置

5.布局子元素的约束

总结


前言

上文我们学习记录鸿蒙开发中的UI渲染相关的知识点,深入学习了条件渲染、循环渲染的使用方法,以及数据懒加载。本文学习鸿蒙开发UI布局相关的知识。

一、布局概述

在声明式UI中,所有的页面都是由自定义组件构成,组件按照布局的要求依次排列,最终构成UI页面。

布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。

页面布局的合理流程:

1.布局结构

布局的结构通常是分层级的,代表了用户界面中的整体架构。

一个常见的页面结构如下所示

Page表示页面的根节点,Column/Row等元素为系统组件。针对不同的页面结构,ArkUI提供了不同的布局组件来实现对应布局的效果

2.布局元素组成

布局相关的容器组件可形成对应的布局效果

布局元素组成图如下所示

组件区域(蓝区方块):组件区域表明组件的大小,width、height属性设置该区域的大小。

组件内容区(黄色方块):组件区域大小减去组件的border值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。

组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容的大小就是设置的width和height减去padding和border值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。

组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。

做过UI开发的同学应该对这几个属性margin border padding应该非常好理解,考虑到开发的通用性,以及便于技术栈转型,这里UI布局相关的属性都是CSS布局中保持一致的,对于没有前端开发经验的同学,把组件占用的区域,使用盒子模型能更好理解。

3.布局分类

声明式UI提供了以下8种常见布局

4.布局位置

布局容器相对于自身或其他组件的位置,通过position、offset等属性控制

定位能力

使用场景

实现方式

绝对定位

对于不同尺寸的设备,使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷。

使用position实现绝对定位,设置元素左上角相对于父容器左上角偏移位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。

相对定位

相对定位不脱离文档流,即原位置依然保留,不影响元素本身的特性,仅相对于原位置进行偏移。

使用offset可以实现相对定位,设置元素相对于自身的偏移量。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。

绝对定位案例:

注:根据组件定义的顺序,使用position定位的组件会覆盖在其前面定义的组件,但是对其后定义的组件没有影响。

相对定位案例:

5.布局子元素的约束

对子元素的约束能力

使用场景

实现方式

拉伸

容器组件尺寸发生变化时,增加或减小的空间全部分配给容器组件内指定区域。

flexGrow和flexShrink属性:

  1. flexGrow基于父容器的剩余空间分配来控制组件拉伸。
  2. flexShrink设置父容器的压缩尺寸来控制组件压缩。

缩放

子组件的宽高按照预设的比例,随容器组件发生变化,且变化过程中子组件的宽高比不变。

aspectRatio属性指定当前组件的宽高比来控制缩放,公式为:aspectRatio=width/height。

占比

占比能力是指子组件的宽高按照预设的比例,随父容器组件发生变化。

基于通用属性的两种实现方式:

1. 将子组件的宽高设置为父组件宽高的百分比。

2. layoutWeight属性,使得子元素自适应占满剩余空间。

隐藏

隐藏能力是指容器组件内的子组件,按照其预设的显示优先级,随容器组件尺寸变化显示或隐藏,其中相同显示优先级的子组件同时显示或隐藏。

通过displayPriority属性来控制页面的显示和隐藏。


总结

本文学习了鸿蒙开发UI布局相关的知识,鸿蒙开发的UI布局技术栈基本与目前前端开发主流技术栈是一致的,这样可以易化前端开发的技术转型。本文简单了解了鸿蒙开发中使用频率最高的布局分类,后面会详细学习每种布局容器的使用。

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

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

相关文章

微信小程序快速入门03

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、生命周期生…

花了三天的时间做了一个多功能 AI 助手

嗨!我是团子,大家新年快乐呀~ 前几天看到一些好朋友在朋友圈晒自己的年度总结,立新年 Flag,看到大家一年满满的收获,再看看自己,不由得想再看看人家,然后再看看自己,然后再看看人家…

(南京观海微电子)——色温介绍

色温是表示光线中包含颜色成分的一个计量单位。从理论上说,黑体温度指绝对黑体从绝对零度(-273℃)开始加温后所呈现的颜色。黑体在受热后,逐渐由黑变红,转黄,发白,最后发出蓝色光。当…

NFTScan | 01.01~01.07 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.01.01~ 2024.01.07 NFT Hot News 01/ 空投 | Mint Blockchain 将于 2024 年 1 月 10 号启动 Mint Genesis NFT 空投活动 1 月 1 日,Mint Blockchain 宣布将于 2024 年 1…

双指针算法: 有效三角形的个数

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 前言 声明…

即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器板

OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由器板。OpenWrt 是一个轻量级嵌入式 Linux 操作系统,支持近 1,800 个路由器和其他设备。然而,这将是第一块由 OpenWrt 直接开发的路由器板。 该主板将基于 MediaTek MT7981B (Filogic 82…

【教学类-43-19】20240113 数独(一) 3-5-6-7-8-10宫格 无空行A4模板

作品展示: 3宫格 5宫格 6宫格 7宫格 8宫格 10宫格,题目连在一起 背景需求: 制作十宫格数独模板,为了凑满20行,删除了每个数独题之间的行列分割线 【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*YZ套(n10)&am…

构建中国人自己的私人GPT-有道GPT

创作不易,请大家多鼓励支持。 在现实生活中,很多人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的私人GPT变得非常重要。 先看效果 一、…

[Windows] Win10 常用快捷键

文章目录 🚀 [Windows] Win10 常用快捷键🌐 Windows 操作系统🔥 Windows 10 🌐 Windows 10 快捷键概览🔥 基本快捷键🔥 窗口快捷键🔥 功能快捷键 📝 小结 🚀 [Windows] W…

网站后台拿Webshell

通过注入或者其他途径,获取网站管理员账号和密码后,找到后台登录地址,登录后,寻找后台漏洞上传网页后门,获取网站的webshell webshell的作用是方便攻击者,webshel是拥有fso权限,根据fso权限的不…

Android Studio 虚拟机 Unknown Error 解决

前言 尝试了网上很多解决方式,但很遗憾,都没效果; 于是我就想啊🤔,虚拟机属于SDK的一部分,那有没有一种可能,是SDK出了问题; 于是我就换了新的SDK,结果 ---- 完美解决…

高德地图Web服务使用方法——电子围栏

1 高德地图Web服务 1.1 添加Key 注册高德地图,进入控制台,创建新应用,添加Key,选择Web服务,不添加域名白名单,勾选同意政策。 刷新界面,记住获取到的Key。 1.2 下载安装Postman https://www…

AWS-SAA-C03认证——之基础知识扫盲

文章目录 前言一、Amazon ECS二、 Amazon EKS三、Amazon EC2四、Elastic Beanstalk五、AWS Fargate六、 AWS Lambda (serverless)七、Amazon EBS7.1 EBS生命周期 八、Amazon Elastic File System (EFS) -共享文件系统九、什么是 Amazon S3?9.…

2024PMP考试新考纲-【过程领域】近期典型真题和很详细解析(5)

今天华研荟继续为您分享【过程Process领域】的新考纲下的真题,进一步帮助大家体会和理解新考纲下PMP的考试特点和如何应用知识来解题,并且举一反三,在两个多月的时间内,一次性、高等级通过2024年PMP考试。 2024年PMP考试新考纲-【…

WebService

Webservice 是一种传统的soa技术架构, 它不依赖于任何的编程语言,也不依赖于任何的技术平台, 可以直接基于http协议实现网络应用间的数据交互 Webservice 服务端是以接口远程接口为主的, 在java实现的webservice技术里面主要依靠的是CXF开发框架,而这个CXF框架可以直接将接口发…

《向量数据库指南》让「引用」为 RAG 机器人回答增加可信度

在之前的文章中,我们已经介绍了如何用 Milvus 向量数据库以及 LlamaIndex 搭建基础的聊天机器人《Chat Towards Data Science |如何用个人数据知识库构建 RAG 聊天机器人?》《书接上回,如何用 LlamaIndex 搭建聊天机器人&#xff…

计算机图形学作业:三维线段的图形变换

1. 将三维空间某线段 P1P2进行如下的操作,请按要求回答问题: (1) 沿 X 轴、Y 轴和 Z 轴分别平移 dx、dy 和 dz 的长度,给出相应的变换矩阵。 变换矩阵为: T100001000010dxdydz1 (2&#xff09…

Scanner接收用户键盘输入数据(Java)

1.导包:import java.util.Scanner; 一般情况不需要自己导包,idea工具会自动帮助我们导包 2.代码: 得到键盘扫描器对象: Scanner sc new Scanner(System.in); 接收用户输入数据: int sth sc.nextInt(); String…

算法每日一题: 删除排序列表中的重复元素 | 链表的删除

大家好,我是星恒 今天给大家带来的是一道简单的链表删除题,题目很简单,不过可以帮助我们很好的复习链表的删除,尤其适合基础薄弱的友友们学习 ~ 题目:leetcode 83 给定一个已排序的链表的头 head , 删除所有…

【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板

作品展示: 4宫格 9宫格 题目连在一起 背景需求: 制作十宫格数独模板,为了凑满20行,删除了每个数独题之间的行列分割线 【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*YZ套(n10),套用没有分割行列的A4横版模板…