HarmonyOS栅格布局---GridRow

题外话:栅格布局最初是在web 端应用的,为了解决一个系统在不同的屏幕,和不同的设备上可以不进行多次开发的问题,希望一次开发可以最大化的适配用户的不同类型设备,解决方案:将屏幕采用断点的方式进行布局分割,然后通过响应式布局方式实现不同的屏幕上展示不同布局的方式。

而HarmonyOS 目前作为移动端的操作系统之一,各大厂家的设备屏幕大小不一样,如何让一套代码适配多个屏幕呢?从API9 开始引入了这样的设计,设计了GridRow 容器和子组件GridCol
这个容器harmonyOS 工程师 写的自定义组件,但是使用方的开发者,为了让开发者更方便的使用以上场景所说的问题,设计思路如下:
1 有一定的规律性,将布局划分为等宽列数和行数,这样就可以方便的对页面布局元素进行定位和排版。
2 统一的定位标注(什么是定位标注)
3 不同设备上元素在不同设备展示的时候如果只元素发生变化,间距不发生变化,那么界面会非常的丑,为了解决这个问题引入了距离调整方法,
4 不同的屏幕大小下每行每列展示的元素数量不一样,如果超过一行或者一列如何解决,希望实现自动换行。

解决方案:首先将移动设备的屏幕按照宽度作为断点的依据,分为了xs、sm、md、lg四类,尺寸范围如下::
在这里插入图片描述在GridRow栅格组件中,允许开发者使用breakpoints自定义修改断点的取值范围,最多支持6个断点,除了默认的四个断点外,还可以启用xl,xxl两个断点,支持六种不同尺寸(xs, sm, md, lg, xl, xxl)设备的布局设置。
在这里插入图片描述设置方式: breakpoints: {value: [‘320vp’, ‘520vp’, ‘840vp’, ‘1080vp’]}
表示启用xs、sm、md、lg、xl共5个断点,小于320vp为xs,320vp-520vp为sm,520vp-840vp为md,840vp-1080vp为lg,大于1080vp为xl。
UI的布局宽度有两种表达方式 1 在不是满屏的情况下用容器宽度 ComponentSize 2 在满屏的情况下用窗口宽度WindowSize
用reference 属性进行设置:

GridRow({breakpoints: {value: ['200vp', '300vp', '400vp', '500vp', '600vp'],reference: BreakpointsReference.WindowSize}

})


**栅格容器默认将屏幕的宽度划分为12列,可以通过对子组件的span 设置不同的断点下子元素占用的屏幕宽度。**
GridRow({breakpoints: {value: ['200vp', '300vp', '400vp', '500vp', '600vp'],reference: BreakpointsReference.WindowSize}
}){GridCol({span: {xs: 2, // 在最小宽度类型设备上,栅格子组件占据的栅格容器2列。sm: 3, // 在小宽度类型设备上,栅格子组件占据的栅格容器3列。md: 4, // 在中等宽度类型设备上,栅格子组件占据的栅格容器4列。lg: 6, // 在大宽度类型设备上,栅格子组件占据的栅格容器6列。xl: 8, // 在特大宽度类型设备上,栅格子组件占据的栅格容器8列。xxl: 12 // 在超大宽度类型设备上,栅格子组件占据的栅格容器12列。}}){具体的子组件内的布局}.backgroundColor(color)}**同时可以将父容器GridRow栅格容器的列数通过columens 的属性修改,比如修改为6,意味着在不同的断点下,子组件最大的列为6列*
GridRow({ columns: 6 }) {}
也可以在不同的断点下对栅格容器的列进行定义:GridRow({ columns: { sm: 4, md: 8 }, breakpoints: { value: ['200vp', '300vp', '400vp', '500vp', '600vp'] } }) {}

*代表:小于等于sm 大小的屏幕最大列数都是4,而大于等于md 屏幕大小的列数都是8.

那么下面是什么意思呢?


GridRow({ columns: { sm: 4, md: 8,lg: 12}, breakpoints: { value: ['200vp', '300vp', '400vp', '500vp', '600vp'] } }) {}

GridRow 默认的布局方向是水平方向,并且是从左到右,有些布局是从右到左如何设置。可以通过direction
GridRow({ direction: GridRowDirection.RowReverse }){}

GridRow通过gutter属性设置子元素在水平和垂直方向的间距。
不能在不同的断点下设置间距

如果只写数字,那么代表水平和垂直方向都是固定的间距如设置水平和垂直方向的间距都为20
GridRow({ gutter: 20}){}
也可以水平和垂直方向单独设置如:
GridRow({ gutter: {x:20,y:30}}){}

对于子组件GridCol 的设置重点三个属性
1 span 代表 子组件在父容器中占用的列数。
可以设置在所有的断点下都占用2列数如:

  Row() {GridRow({ columns: 8}){GridCol({span:2 })}

也可以在不同的断点下设置不同的列数

GridRow({ columns: 8 }) {GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 } }) {   }}

2 offset 偏移量,代表子组件在屏幕宽度分割列后,每个子组件和前面的子组件间隔几个组件,默认是0
比如:屏幕默认12列,设置每个子组件之间间隔2列
GridRow() {

  GridCol({ offset: 2 }) {     }}

可也是在不同的断点下设置偏移量如:将屏幕分割成8列,
GridRow({ columns: 8 }) {
GridCol({ offset: { xs: 1, sm: 2, md: 3, lg: 4 } }) { }
}
3 order 用来设置子组件的顺序,顺序按照设置值从小到大排序,如果没有设置值按照组件顺序排序,默认值为0

通过这些属性可以实现金刚区在不同的屏幕下不同的展示效果:
如金刚区的入口总计12个,在xms 下每行展示3个,在lg 的屏幕下每行展示12个
GridRow({ }) {
GridCol({ span: { xs: 4, lg: 1 } }) { ForEco(){
金刚区布局} }
}

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

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

相关文章

创新驱动数字经济发展,融云获评「2023 数字经济隐形独角兽」

近期,由北京市大兴区经济和信息化局、北京大兴经济开发区管理委员会、北京隐形独角兽信息科技院联合主办的“2023 数字经济独角兽大会”在北京成功举行。关注【融云 RongCloud】,了解协同办公平台更多干货。 作为专注耕耘通信赛道、掌握关键核心技术、具…

LDO线性稳压器与开关电源的原理

线性稳压器LDO典型代表:LM7805 ,AMS1117,还有一下性能比较好的LDO: 开关稳压器典型代表:LM2596,MP1584,TPS5430,MP2315S LDO靠发热分散能量,纹波较小一般在30mv以下;DCDC通过开关开断…

ubuntu 安装docker GPG error缺少公钥解决方法

文章目录 报错信息解决方案 报错信息 W: GPG error: http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8 E: The repository ‘http:…

最新国内使用GPT4教程,GPT语音对话使用,Midjourney绘画,ChatFile文档对话总结+DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

节假日计算器

节假日计算器 代码结果 代码 import cn.hutool.core.text.StrFormatter; import com.google.common.collect.Lists; import lombok.Data;import java.time.LocalDate; import java.time.format.TextStyle; import java.util.ArrayList; import java.util.Collections; import …

Ubuntu安装K8S的dashboard(管理页面)

原文网址:Ubuntu安装k8s的dashboard(管理页面)-CSDN博客 简介 本文介绍Ubuntu安装k8s的dashboard(管理页面)的方法。 Dashboard的作用有:便捷操作、监控、分析、概览。 相关网址 官网地址:…

pnpm、npm、yarn是什么?怎么选择?

pnpm、npm、yarn三者是前端常用的包管理器,那么他们有什么区别呢? 1. npm (Node Package Manager) npm是Node.js的默认包管理器。自Node.js发布以来,npm就一直作为它的一个组成部分存在,因此,安装Node.js时也会自动安…

电路设计(8)——计时器的multism仿真

1.功能设计 这是一个计时电路,在秒脉冲的驱动下,计时器开始累加,6个数码管分别显示计时的 时:分:秒。 仿真图如下所示: 左边的运放构成了振荡电路,可以产生脉冲波。这个脉冲波给计时电路提供基准…

0.1+0.2≠0.3,揭秘Python自带的Bug

朋友们,问一个简单的问题:0.10.2? 你肯定会说:中国人不骗中国人,0.10.20.3。 但是在Python里,0.10.2≠0.3 ,我们今天一起来看看这个,并且看一下解决办法。 离奇的错误 在python里…

【日志系列】什么是分布式日志系统?

✔️什么是分布式日志系统? 现在,很多应用都是集群部署的,一次请求会因为负载均衡而被路由到不同的服务器上面,这就导致一个应用的日志会分散在不同的服务器上面。 当我们要向通过日志做数据分析,问题排查的时候&#…

Sass(Scss)、Less的区别与选择 + 基本使用

在前端开发中,CSS预处理器成为了提高样式表开发效率的重要工具。Sass(以及其语法Scss)和Less是两个最为流行的CSS预处理器,它们在语法、功能和用法上存在一些差异,因此在选择使用时需要考虑多个因素。 1. Sass 和 Les…

60辆苏州金龙氢能物流车打造长三角绿色运营新范本

近日,在广泰氢能杭州湾运营中心,一辆辆苏州金龙18吨氢能物流车来回穿梭,它们从运营中心出发,将不同类型的汽车零配件从物流园区运往整车制造厂。司机李师傅表示,这条路线他跑了几个月,每天四趟。和他一样&a…

双向链表的实现及头尾插入删除

双链表的增删查改 一.双向链表的初始化二.创建返回链表的头结点三.双向链表销毁四. 双向链表打印五.双向链表尾插六. 双向链表尾删七. 双向链表头插八.双向链表头删九.双向链表的查找十.双向链表在pos的前面进行插入十一. 双向链表删除pos位置的节点 一.双向链表的初始化 Lis…

vscode编译调试sln工程

使用msvc工具链 vscode配置调用visual studio的编译和调试环境_vscode用vs-CSDN博客 将vscode打造无敌的IDE(14) tasks.json和launch.json配置详解,随心所欲添加自动化任务_tasks.json详解-CSDN博客 通过命令行使用 Microsoft C 工具集 | Microsoft Learn 编译…

GPT分区格式

GPT分区格式 [rootlocalhost ~]# gdisk /dev/sdb -bash: gdisk: 未找到命令 [rootlocalhost ~]# yum -y install gdisk- gdisk命令用于查看磁盘使用情况和磁盘分区(GPT分区格式) - 命令格式:gdisk [选项...] [设备路径] - 常用选项&…

Jenkins的shared library相关

Jenkins的shared library是一种用于在多个Jenkins流水线项目中共享和重用代码的机制。它可以将常用的构建逻辑、工具函数或自定义步骤封装为可复用的库,并以插件的形式提供给Jenkins。 Shared library的作用主要包括以下几个方面: 代码复用&#xff1a…

Flink项目实战篇 基于Flink的城市交通监控平台(下)

系列文章目录 Flink项目实战篇 基于Flink的城市交通监控平台(上) Flink项目实战篇 基于Flink的城市交通监控平台(下) 文章目录 系列文章目录4. 智能实时报警4.1 实时套牌分析4.2 实时危险驾驶分析4.3 出警分析4.4 违法车辆轨迹跟…

redis中根据通配符删除key

redis中根据通配符删除key 我们是不是在redis中keys user:*可以获取所有key,但是 del user:*却不行这里我提供的命令主要是SCANSCAN 0 MATCH user:* COUNT 100使用lua保证原子性 SCAN参数描述 在示例中,COUNT 被设置为 100。这是一个防止一次性获取大…

TiDB 7.1 多租户在中泰证券中的应用

本文详细介绍了中泰证券在系统国产化改造项目中采用 TiDB 多租户技术的实施过程。文章分析了中泰证券数据库系统现状以及引入 TiDB 资源管控技术的必要性,探讨了 TiDB 多租户的关键特性,并阐述了在实际应用中的具体操作步骤。通过该技术的应用&#xff0…

cfa一级考生复习经验分享系列(十七)

考场经验: 1.本人在Prometric广州考试中心,提前一天在附近住下,地方比较好找,到了百汇广场北门,进去就可以看见电梯直达10楼。进去之后需要现场检查行程卡和健康码,然后会问最近你有没有发烧咳嗽等问题&…