第十三讲_ArkUI栅格布局(GridRow/GrowCol)

ArkUI栅格布局(GridRow/GrowCol)

  • 1. 栅格布局概述
  • 2. GridRow的使用
    • 2.1 设置栅格布局的总列数
    • 2.2 设置栅格布局的排列方向
    • 2.3 设置栅格布局中子组件间距
  • 3. GridCol的使用
    • 3.1 设置一个GridCol占栅格布局的列数
    • 3.2 设置GridCol在栅格布局中偏移列数
    • 3.3 设置GridCol在栅格布局中顺序
  • 4. 栅格系统断点
    • 4.1 GridRow 自定义断点
    • 4.2 应用断点适配不同宽度设备

1. 栅格布局概述

GridRow 为栅格容器组件,需与栅格子组件 GridCol 联合使用。

  • 栅格布局中将页面划分为等宽的列数和行数
  • 栅格布局中可以调整列与列之间和行与行之间的间距
  • 栅格布局中当页面元素的数量超出了一行或一列的容量时,自动换到下一行或下一列

2. GridRow的使用

2.1 设置栅格布局的总列数

GridRow 中通过 columns 参数设置栅格布局的总列数,columns 等于 12(默认值)。

@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol() {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol() {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)
    }
  }
}

在这里插入图片描述
示例代码中,设置栅格布局的Columns=4,表示4个GridCol子组件会占用一行。

2.2 设置栅格布局的排列方向

GridRowdirection 参数来指定 GridCol 在栅格容器中的排列方向。

  • GridRowDirection.Row:从左往右排列(默认值)
  • GridRowDirection.RowReverse:从右往左排列
@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4, direction: GridRowDirection.RowReverse}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol() {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol() {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)
    }
  }
}

在这里插入图片描述

2.3 设置栅格布局中子组件间距

GridRow 中通过 gutter 参数设置子元素在水平(x轴)和垂直(y轴)方向的间距。

@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4, direction: GridRowDirection.RowReverse, gutter: {x: 10, y: 10}}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol() {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol() {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)

      GridCol() {
        Text("第五个GridCol")
      }
      .backgroundColor(Color.Orange)
    }
  }
}

在这里插入图片描述

3. GridCol的使用

3.1 设置一个GridCol占栅格布局的列数

GridCol 中通过 span 参数设置在栅格布局中占的列数,span 等于 1(默认值)。

@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4, direction: GridRowDirection.RowReverse, gutter: {x: 10, y: 10}}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol() {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol() {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)

      // 设置一个GridCol占栅格布局的4列
      GridCol({span: 4}) {
        Text("第五个GridCol")
      }
      .backgroundColor(Color.Orange)
    }
  }
}

在这里插入图片描述

3.2 设置GridCol在栅格布局中偏移列数

GridCol 中通过 offset 参数设置在栅格布局中偏移的列数,offset 等于 0(默认值)。

@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4, direction: GridRowDirection.RowReverse, gutter: {x: 10, y: 10}}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol() {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol() {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)

      // 设置一个GridCol占栅格布局的2列
      // 设置GridCol偏移1列
      GridCol({span: 2, offset: 1}) {
        Text("第五个GridCol")
      }
      .backgroundColor(Color.Orange)
    }
  }
}

在这里插入图片描述

3.3 设置GridCol在栅格布局中顺序

GridCol 中通过 order 参数设置在栅格布局中排列顺序,order 等于0(默认)。order 较小的组件在前,较大的在后。没有设置order参数的,按照代码的先后顺序排列。

@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({columns: 4, gutter: {x: 10, y: 10}}) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)
      
      // 设置GridCol的order为0
      GridCol({order: 0}) {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      // 设置GridCol的order为1
      GridCol({order: 1}) {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)

      // 设置一个GridCol占栅格布局的2列
      // 设置GridCol偏移1列
      // 设置GridCol的顺序为1
      GridCol({span: 2, offset: 1, order: 2}) {
        Text("第五个GridCol")
      }
      .backgroundColor(Color.Orange)
    }
  }
}

在这里插入图片描述

示例代码中,第一个GridCol子组件没有设置orderorder默认等于0;第二个GridCol子组件设置order等于0;第三个GridCol子组件设置order等于1;第四个GridCol子组件没有设置orderorder默认等于0;第五个GridCol子组件设置order等于2。所以最终显示的顺序为:第一个GridCol、第二个GridCol、第四个GridCol、第三个GridCol、第五个GridCol

4. 栅格系统断点

栅格系统以设备的水平宽度作为断点依据,定义设备的宽度类型,形成了一套断点规则。

栅格系统默认断点将设备宽度分为 xs、sm、md、lg 四类:

  • xs:最小宽度类型设备[0, 320)
  • sm:小宽度类型设备[320, 520)
  • md:中等宽度类型设备[520, 840)
  • lg:大宽度类型设备[840, +∞)

4.1 GridRow 自定义断点

GridRow 中通过 breakpoints 参数自定义修改断点的取值范围,最多支持 6 个断点:

  • xs:最小宽度类型设备
  • sm:小宽度类型设备
  • md:中等宽度类型设备
  • lg:大宽度类型设备
  • xl:特大宽度类型设备
  • xxl:超大宽度类型设备
GridRow({
  breakpoints: {
    // 表示启用xs、sm、md、lg、xl、xxl共6个断点,小于200vp为xs,200vp-300vp为sm,300vp-400vp为md,4000vp-500vp为lg,500vp-600vp为xl,大于600vp为xxl
    value: ["200vp", "300vp", "400vp", "500vp", "600vp"],
    reference: BreakpointsReference.WindowSize,
  },
});

4.2 应用断点适配不同宽度设备

GridRow 的 columns 参数,GridCol 的 span、offset 参数可以根据断点分别设置不同的值。

例如:GridRow 的 columns 参数设置

  • xs(最小宽度类型设备)时,栅格布局的列数为2
  • sm(小宽度类型设备)时,栅格布局的列数为2
  • md(中等宽度类型设备)时,栅格布局的列数为4
  • lg(大宽度类型设备)时,栅格布局的列数为4
@Entry
@Component
struct GridRowLayout {
  build() {
    GridRow({
      columns: {
        xs: 2,
        sm: 2,
        md: 4,
        lg: 4
      }
    }) {
      GridCol() {
        Text("第一个GridCol")
      }
      .backgroundColor(Color.Red)

      GridCol({order: 0}) {
        Text("第二个GridCol")
      }
      .backgroundColor(Color.Green)

      GridCol({order: 1}) {
        Text("第三个GridCol")
      }
      .backgroundColor(Color.Blue)

      GridCol() {
        Text("第四个GridCol")
      }
      .backgroundColor(Color.Pink)

    }
  }
}

在这里插入图片描述

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

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

相关文章

xshell可以远程登录服务器但是vscode一直显示让输入密码的解决方案

vscode报错 但是xshell可以登录 原因:可能因为我上一次没有恰当的退出远程链接导致的,我每次退出远程都是直接强制关闭VScode。 解决方法:打开VScode的 view (查看) palette(命令面板)然后输…

读懂比特币—bitcoin代码分析(二)

我们从比特币的客户端启动顺序作为入口来分析代码&#xff0c;先看下面这个函数&#xff1a;AppInitBasicSetup&#xff0c;初始化应用基础设置 bool AppInitBasicSetup(const ArgsManager& args, std::atomic<int>& exit_status) {// ************************…

【Maven】-- 打包添加时间戳的两种方法

一、需求 在执行 mvn clean package -Dmaven.test.skiptrue 后&#xff0c;生成的 jar 包带有自定义系统时间。 二、实现 方法一&#xff1a;使用自带属性&#xff08;不推荐&#xff09; 使用系统时间戳&#xff0c;但有一个问题&#xff0c;就是默认使用 UTC0 的时区。举例…

西瓜书学习笔记——Boosting(公式推导+举例应用)

文章目录 引言AdaBoost算法AdaBoost算法正确性说明AdaBoost算法如何解决权重更新问题&#xff1f;AdaBoost算法如何解决调整下一轮基学习器样本分布问题&#xff1f;AdaBoost算法总结实验分析 引言 Boosting是一种集成学习方法&#xff0c;旨在通过整合多个弱学习器来构建一个…

2024区块链应用趋势,RWA实物资产化

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 实物资产通证化&#xff0…

【开源】基于JAVA语言的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

状态空间模型(SSM)是近来一种备受关注的 Transformer 替代技术

状态空间模型&#xff08;SSM&#xff09;是近来一种备受关注的 Transformer 替代技术&#xff0c;其优势是能在长上下文任务上实现线性时间的推理、并行化训练和强大的性能。而基于选择性 SSM 和硬件感知型设计的 Mamba 更是表现出色&#xff0c;成为了基于注意力的 Transform…

VUE+Vis.js鼠标悬浮title提前显示BUG解决方法

在使用VUEVis.js做拓扑图&#xff0c;利用鼠标悬浮放在图标展示设备信息时&#xff0c;发现鼠标一放在图标上面时&#xff0c;标题表会提前在放置的元素下显示&#xff0c;鼠标再放到图标上去元素才会隐藏变成悬浮状态 解决方法&#xff1a; 添加一个div元素&#xff0c;设置v…

C语言入门到精通之练习实例9:输出国际象棋棋盘

题目&#xff1a;要求输出国际象棋棋盘。 程序分析&#xff1a;国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j来控制列&#xff0c;根据ij的和的变化来控制输出黑方格&#xff0c;还是白方格。 如果出现乱码情况请参考本博客【C 练习…

前端文件上传(文件上传,分片上传,断点续传)

普通文件上传 思路&#xff1a; 首先获取用户选择的文件对象&#xff0c;并将其添加到一个 FormData 对象中。然后&#xff0c;使用 axios 的 post 方法将 FormData 对象发送到服务器。在 then 和 catch 中&#xff0c;我们分别处理上传成功和失败的情况&#xff0c;并输出相应…

VM虚拟机忘记密码,ISO镜像修改

VM虚拟机忘记密码&#xff0c;ISO镜像修改 制作镜像&#xff1a; 镜像已制作&#xff0c;可在文末链接自行获取从镜像启动系统 1&#xff09;添加IOS镜像文件&#xff1a; 2&#xff09;开机进去固件&#xff1a; 进入后选择对应的驱动器启动 3. 修改密码 点击修改密码软件&a…

苹果、VMware、Apache等科技巨头漏洞被大量应用

Therecord网站披露&#xff0c;黑客因频繁利用多个新发现的漏洞发起攻击吸引了美国网络安全专家们的高度关注&#xff0c;专家们担心这些漏洞可能会被网络犯罪组织和其他各国政府用于不法目的。 过去一周&#xff0c;美国网络安全专家和网络安全与基础设施安全局&#xff08;C…

Dify学习笔记-入门学习(二)

1、官方文档链接 https://docs.dify.ai/v/zh-hans/getting-started/readme 2、 Dify基础介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成…

鲜花商城,Java项目、前端vue

系统架构 后台&#xff1a; SpringBoot Mybatis-plus Mybatis Hutool工具包 lombok插件 前台&#xff1a;Vue Vue Router ELementUI Axios 系统简介 功能&#xff1a;首页推荐&#xff08;默认根据用户买过的商品进行推荐&#xff0c;如果没买过则根据商品销量推荐&…

8种策略教你有效的ddos攻击防御方法

这篇文章讨论了缓解DDoS&#xff08;分布式拒绝服务&#xff09;攻击的最佳实践。DDoS攻击是一种旨在使目标服务器或网络超载而无法正常工作的恶意行为。文章提出了一系列策略来减轻DDoS攻击的影响&#xff0c;包括流量过滤和封堵、负载均衡和弹性扩展、使用CDN&#xff08;内容…

函数递归和迭代(简单认识)

1.递归思想 把一个大型复杂问题层层转化为一个与原问题相似&#xff0c;但规模较小的子问题来求解&#xff1b;直到子问题不能再被拆分&#xff0c;递归就结束了。所以递归的思考方式就是把大事化小的过程。递归中的递就是递推的意思&#xff0c;归就是回归的意思&#xff0c;…

excel 设置密码保户

目录 前言设置打开密码设置编辑密码 前言 保户自己的数据不被泄漏是时常有必要的&#xff0c;例如财务数据中最典型员工工资表&#xff0c;如果不设置密码后果可想而知&#xff0c;下面我们一起来设置excel查看密码和编辑密码。我用的是wps,其它版本类似&#xff0c;可自行查资…

Qt解析含颜色的QString字符串显示到控件

1、需求 开发接收含颜色字符串显示到窗口&#xff0c;可解析字符串颜色配置窗口属性&#xff0c;且分割字符串显示。 mprintf(“xxxxxx”)&#xff1b;打印的xxxxxx含有颜色配置。 2、实现方法 2.1、条件 选用Qt的PlainTextEdit控件显示字符串&#xff0c;配置为只读模式 …

C++笔记(二)

函数的默认参数 如果我们自己传入数据&#xff0c;就用自己的数据&#xff0c;如果没有&#xff0c;就用默认值 语法&#xff1a; 返回值类型 函数名&#xff08;形参默认值&#xff09;{} int func&#xff08;int a&#xff0c;int b20&#xff0c;int c30&#xff09;{} …

[BUG] Authentication Error

前言 给服务器安装了一个todesk&#xff0c;但是远程一直就是&#xff0c;点击用户&#xff0c;进入输入密码界面&#xff0c;还没等输入就自动返回了 解决 服务器是无桌面版本&#xff0c;或者桌面程序死掉了&#xff0c;重新安装就好 sudo apt install xorg sudo apt inst…