第五篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:ArkUI 组件库常用布局方式

传奇开心果短博文系列

  • 系列短博文目录
    • 鸿蒙开发技术点案例示例短博文系列
  • 短博文目录
    • 一、前言
    • 二、ArkUI 中常用的布局方式介绍
    • 三、Flex 布局示例代码
    • 四、Grid 布局示例代码
    • 五、Stack 布局示例代码
    • 六、Panel 布局示例代码
    • 七、Tab 布局示例代码
    • 八、Drawer 布局示例代码
    • 九、Card 布局示例代码
    • 十、Form 布局示例代码
    • 十一、归纳总结

系列短博文目录

鸿蒙开发技术点案例示例短博文系列

短博文目录

一、前言

ArkUI 是 ArkTS 框架中的一个UI组件库,提供了多种布局方式来帮助开发者构建灵活和美观的界面。在这里插入图片描述

二、ArkUI 中常用的布局方式介绍

在这里插入图片描述以下是 ArkUI 中常用的布局方式:

  1. Flex 布局:ArkUI 的 Flex 布局使用 FlexContainer 和 FlexItem 组件来实现。FlexContainer 用于创建一个容器,其中的子元素按照水平或垂直方向排列,并根据设置的比例自动调整大小。FlexItem 用于定义 FlexContainer 中的子元素,可以设置元素的大小、对齐方式和伸缩性等属性。

  2. Grid 布局:ArkUI 的 Grid 布局使用 GridContainer 和 GridItem 组件来实现。GridContainer 用于创建一个网格容器,可以自定义行数和列数,以及设置每个单元格的大小和对齐方式。GridItem 用于定义 GridContainer 中的单元格,可以指定单元格所占的行数和列数。

  3. Stack 布局:ArkUI 的 Stack 布局使用 StackContainer 和 StackItem 组件来实现。StackContainer 用于创建一个堆叠容器,其中的子元素按照层级顺序依次叠加显示。StackItem 用于定义 StackContainer 中的子元素,可以设置元素的位置、大小和层级。

  4. Panel 布局:ArkUI 的 Panel 布局使用 Panel 组件来实现。Panel 可以包含多个面板,每个面板可以根据需要设置标题、内容和样式。面板可以水平或垂直排列,支持折叠和展开等交互效果。

  5. Tab 布局:ArkUI 的 Tab 布局使用 TabContainer 和 TabItem 组件来实现。TabContainer 用于创建一个选项卡容器,其中的子元素作为选项卡标签,可以通过切换选项卡来显示不同的内容。TabItem 用于定义 TabContainer 中的选项卡,可以设置选项卡的标题和对应的内容。

  6. Drawer 布局:ArkUI 的 Drawer 布局使用 DrawerContainer 和 DrawerContent 组件来实现。DrawerContainer 用于创建一个抽屉容器,其中的子元素作为抽屉内容,可以通过打开或关闭抽屉来显示或隐藏内容。DrawerContent 用于定义 DrawerContainer 中的抽屉内容。

  7. Card 布局:ArkUI 的 Card 布局使用 Card 组件来实现。Card 可以用于包裹其他组件或内容,形成一个卡片式的布局。Card 可以设置标题、图像、文本等内容,并支持自定义样式和交互效果。

  8. Form 布局:ArkUI 的 Form 布局使用 Form 组件来实现表单布局。Form 可以用于将表单字段组织在一起,并提供统一的样式和布局。Form 可以包含输入框、选择框、按钮等表单元素,并支持表单验证和提交等功能。

这些布局方式都是 ArkUI 提供的常用布局方式,可以根据具体的界面需求选择合适的布局方式。同时,ArkUI 还提供了其他一些特殊用途的布局组件,如 Steps 布局用于实现多步骤流程、Collapse 布局用于实现可折叠内容等,开发者可以根据具体需求选择合适的组件和布局方式来构建界面。

三、Flex 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Flex 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct FlexLayoutExample {
  //构造函数,UI声明
  build() {
    //FlexContainer 组件,创建一个 Flex 容器
    FlexContainer(
      //设置方向为垂直排列
      direction: FlexDirection.Vertical,
      //设置子元素在主轴上的对齐方式为居中对齐
      justifyContent: JustifyContent.Center,
      //设置子元素在交叉轴上的对齐方式为居中对齐
      alignItems: AlignItems.Center,
      //设置容器高度占满可用空间
      height: '100vh',
      //设置容器背景色
      backgroundColor: '#f5f5f5',
    ) {
      //FlexItem 组件,定义一个子元素
      FlexItem(
        //设置子元素占据的空间比例为1
        flex: 1,
        //设置子元素的对齐方式为居中对齐
        alignSelf: AlignSelf.Center,
      ) {
        //文本组件,显示内容
        Text('Flex Item 1')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }

      //FlexItem 组件,定义另一个子元素
      FlexItem(
        //设置子元素占据的空间比例为2
        flex: 2,
        //设置子元素的对齐方式为居中对齐
        alignSelf: AlignSelf.Center,
      ) {
        //文本组件,显示内容
        Text('Flex Item 2')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }

      //FlexItem 组件,定义第三个子元素
      FlexItem(
        //设置子元素占据的空间比例为3
        flex: 3,
        //设置子元素的对齐方式为居中对齐
        alignSelf: AlignSelf.Center,
      ) {
        //文本组件,显示内容
        Text('Flex Item 3')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }
    }
  }
}

在给定的代码中,我们使用了 FlexContainer 组件创建一个 Flex 容器,设置其方向为垂直排列,并设置子元素在主轴和交叉轴上的对齐方式为居中对齐。然后使用 FlexItem 组件定义了三个子元素,分别设置它们的占据空间比例和对齐方式。每个子元素内部都包含一个文本组件,用于显示内容。

四、Grid 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Grid 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct GridLayoutExample {
  //构造函数,UI声明
  build() {
    //GridContainer 组件,创建一个 Grid 容器
    GridContainer(
      //设置网格行数为2
      rows: 'auto auto',
      //设置网格列数为3
      columns: '1fr 1fr 1fr',
      //设置容器高度占满可用空间
      height: '100vh',
      //设置容器背景色
      backgroundColor: '#f5f5f5',
    ) {
      //GridItem 组件,定义一个单元格
      GridItem(
        //设置单元格所在行为第一行
        row: 1,
        //设置单元格所在列为第一列
        column: 1,
        //设置单元格跨越的行数为1
        rowSpan: 1,
        //设置单元格跨越的列数为1
        columnSpan: 1,
        //设置单元格背景色
        backgroundColor: '#ff8080',
      ) {
        //文本组件,显示内容
        Text('Grid Item 1')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#fff');
      }

      //GridItem 组件,定义另一个单元格
      GridItem(
        //设置单元格所在行为第一行
        row: 1,
        //设置单元格所在列为第二列
        column: 2,
        //设置单元格跨越的行数为1
        rowSpan: 1,
        //设置单元格跨越的列数为2
        columnSpan: 2,
        //设置单元格背景色
        backgroundColor: '#80b3ff',
      ) {
        //文本组件,显示内容
        Text('Grid Item 2')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#fff');
      }

      //GridItem 组件,定义第三个单元格
      GridItem(
        //设置单元格所在行为第二行
        row: 2,
        //设置单元格所在列为第一列
        column: 1,
        //设置单元格跨越的行数为1
        rowSpan: 1,
        //设置单元格跨越的列数为3
        columnSpan: 3,
        //设置单元格背景色
        backgroundColor: '#99ff99',
      ) {
        //文本组件,显示内容
        Text('Grid Item 3')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }
    }
  }
}

在给定的代码中,我们使用了 GridContainer 组件创建一个 Grid 容器,设置其行数为2,列数为3,并设置容器高度占满可用空间。然后使用 GridItem 组件定义了三个单元格,分别设置它们所在的行和列、跨越的行数和列数,以及单元格的背景色。每个单元格内部都包含一个文本组件,用于显示内容。

五、Stack 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Stack 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct StackLayoutExample {
  //构造函数,UI声明
  build() {
    //StackContainer 组件,创建一个堆叠容器
    StackContainer(
      //设置容器高度占满可用空间
      height: '100vh',
      //设置容器背景色
      backgroundColor: '#f5f5f5',
    ) {
      //StackItem 组件,定义一个子元素
      StackItem(
        //设置子元素的层级为1
        zIndex: 1,
      ) {
        //文本组件,显示内容
        Text('Stack Item 1')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }

      //StackItem 组件,定义另一个子元素
      StackItem(
        //设置子元素的层级为2
        zIndex: 2,
      ) {
        //文本组件,显示内容
        Text('Stack Item 2')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }

      //StackItem 组件,定义第三个子元素
      StackItem(
        //设置子元素的层级为3
        zIndex: 3,
      ) {
        //文本组件,显示内容
        Text('Stack Item 3')
          //设置字号
          .fontSize(24)
          //设置字体颜色
          .color('#333');
      }
    }
  }
}

在给定的代码中,我们使用了 StackContainer 组件创建一个堆叠容器,并设置容器高度占满可用空间。然后使用 StackItem 组件定义了三个子元素,分别设置它们的层级。每个子元素内部都包含一个文本组件,用于显示内容。

六、Panel 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Panel 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct PanelLayoutExample {
  //构造函数,UI声明
  build() {
    //Panel 组件,创建一个面板容器
    Panel(
      //设置面板标题
      title: 'Example Panel',
      //设置面板折叠状态,默认为展开
      collapsed: false,
      //设置面板背景色
      backgroundColor: '#f5f5f5',
    ) {
      //面板内容
      Text('This is the content of the panel.')
        //设置字号
        .fontSize(16)
        //设置字体颜色
        .color('#333');
    }
  }
}

在给定的代码中,我们使用了 Panel 组件创建一个面板容器,并设置面板的标题、折叠状态和背景色。面板容器内部可以包含任意内容,这里我们使用了一个文本组件来展示面板的内容。

七、Tab 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Tab 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct TabLayoutExample {
  //构造函数,UI声明
  build() {
    //TabContainer 组件,创建一个选项卡容器
    TabContainer {
      //TabItem 组件,定义第一个选项卡
      TabItem(title: 'Tab 1') {
        //选项卡内容
        Text('This is the content of Tab 1.')
          //设置字号
          .fontSize(16)
          //设置字体颜色
          .color('#333');
      }

      //TabItem 组件,定义第二个选项卡
      TabItem(title: 'Tab 2') {
        //选项卡内容
        Text('This is the content of Tab 2.')
          //设置字号
          .fontSize(16)
          //设置字体颜色
          .color('#333');
      }

      //TabItem 组件,定义第三个选项卡
      TabItem(title: 'Tab 3') {
        //选项卡内容
        Text('This is the content of Tab 3.')
          //设置字号
          .fontSize(16)
          //设置字体颜色
          .color('#333');
      }
    }
  }
}

在给定的代码中,我们使用了 TabContainer 组件创建一个选项卡容器,并在其中使用 TabItem 组件定义了三个选项卡。每个选项卡都有一个标题和对应的内容。这里我们使用了文本组件来展示选项卡的内容。

八、Drawer 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Drawer 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct DrawerLayoutExample {
  //构造函数,UI声明
  build() {
    //DrawerContainer 组件,创建一个抽屉容器
    DrawerContainer(
      //设置抽屉的位置为右侧
      position: DrawerPosition.Right,
      //设置抽屉的宽度
      width: '300px',
      //设置抽屉的背景色
      backgroundColor: '#f5f5f5',
    ) {
      //抽屉内容
      Text('This is the content of the drawer.')
        //设置字号
        .fontSize(16)
        //设置字体颜色
        .color('#333');
    }
  }
}

在给定的代码中,我们使用了 DrawerContainer 组件创建一个抽屉容器,并设置抽屉的位置为右侧、宽度和背景色。抽屉容器内部可以包含任意内容,这里我们使用了一个文本组件来展示抽屉的内容。

九、Card 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Card 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct CardLayoutExample {
  //构造函数,UI声明
  build() {
    //Card 组件,创建一个卡片容器
    Card(
      //设置卡片宽度
      width: '300px',
      //设置卡片高度
      height: '200px',
      //设置卡片背景色
      backgroundColor: '#f5f5f5',
    ) {
      //卡片内容
      Text('This is the content of the card.')
        //设置字号
        .fontSize(16)
        //设置字体颜色
        .color('#333');
    }
  }
}

在给定的代码中,我们使用了 Card 组件创建一个卡片容器,并设置卡片的宽度、高度和背景色。卡片容器内部可以包含任意内容,这里我们使用了一个文本组件来展示卡片的内容。

十、Form 布局示例代码

在这里插入图片描述以下是一个使用 ArkUI 中的 Form 布局的示例代码:

//装饰器,指页面入口。
@Entry
//装饰器,指下面开始自定义组件
@Component
//自定义组件
struct FormLayoutExample {
  //构造函数,UI声明
  build() {
    //Form 组件,创建一个表单容器
    Form {
      //FormItem 组件,定义一个表单项
      FormItem(label: 'Username') {
        //输入框组件,用于输入用户名
        Input(placeholder: 'Enter your username');
      }

      //FormItem 组件,定义另一个表单项
      FormItem(label: 'Password') {
        //输入框组件,用于输入密码
        Input(placeholder: 'Enter your password', type: 'password');
      }

      //FormItem 组件,定义第三个表单项
      FormItem(label: 'Email') {
        //输入框组件,用于输入邮箱
        Input(placeholder: 'Enter your email', type: 'email');
      }

      //FormItem 组件,定义第四个表单项
      FormItem(label: 'Phone') {
        //输入框组件,用于输入手机号码
        Input(placeholder: 'Enter your phone number', type: 'tel');
      }

      //按钮组件,用于提交表单
      Button(text: 'Submit', type: 'primary');
    }
  }
}

在给定的代码中,我们使用了 Form 组件创建一个表单容器,并在其中使用 FormItem 组件定义了多个表单项。每个表单项都有一个标签和对应的输入框组件。最后,我们使用了一个按钮组件来提交表单。

请注意,这只是一个简单示例,实际应用中您可以根据需要进行更复杂的表单布局和字段验证。同时,您可能还需要根据具体框架或库的要求进行相应的调整和修改。

十一、归纳总结

在这里插入图片描述ArkUI 是 ArkTS 框架中的一个UI组件库,ArkUI的这些布局组件可以帮助您在页面中实现不同的布局效果,提供更好的用户体验和界面设计。根据具体需求,您可以选择合适的布局组件来构建您的页面。同时,根据具体框架或库的要求进行相应的调整和修改,以实现更复杂的布局和功能。

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

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

相关文章

Redis客户端之Redisson(二)Redisson分布式锁

一、原理: Redisson并没有通过setNx命令来实现加锁,而是基于 Redis 看⻔狗机制,自己实现了一套分布式锁逻辑。 1、加锁机制: 二、使用方法:

关于mysql默认禁用本地数据加载的情况处理(秒解决)

1.首先报错信息:ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides 2.排查问题: 先检查local_infile的状态:使用sql指令 show global variables like local_infile; 这种情…

【软件测试】学习笔记-构建并执行 JMeter 脚本的正确姿势

有些团队在组建之初往往并没有配置性能测试人员,后来随着公司业务体量的上升,开始有了性能测试的需求,很多公司为了节约成本会在业务测试团队里选一些技术能力不错的同学进行性能测试,但这些同学也是摸着石头过河。他们会去网上寻…

【笔记】顺利通过EMC试验(1-15)-视频笔记

视频链接 【跟杨老师学习电磁兼容-顺利通过EMC(1~15)_哔哩哔哩_bilibili 【跟杨老师学习电磁兼容-顺利通过EMC试验(16~41)_哔哩哔哩_bilibili P2:电子设备的电磁兼容性要求  跟杨老师学习电磁兼容-顺利通过EM... …

探索HTMLx:强大的HTML工具

1. HTMLX htmx 是一个轻量级的 JavaScript 库,它允许你直接在 HTML 中使用现代浏览器的功能,而不需要编写 JavaScript 代码。通过 htmx,你可以使用 HTML 属性执行 AJAX 请求,使用 CSS 过渡动画,利用 WebSocket 和服务…

数据结构·单链表经典例题

1. 移除链表元素 OJ链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 本题是说给出一个链表的头节点head和一个整数val,如果发现节点中存的数据有val就删掉它,最后返回修改后的链表头节点地址 如果题目中没有明确…

用vue实现微信小程序的点餐首页-纯前端效果

一、效果图 图片来源于网络 二、代码 <template><view class"container"><view class"top"><image src"../../static/img/home.png" class"home"></image></view><view class"content&…

Lucene 源码分析——BKD-Tree

Lucene 源码分析——BKD-Tree - AIQ Bkd-Tree Bkd-Tree作为一种基于K-D-B-tree的索引结构&#xff0c;用来对多维度的点数据(multi-dimensional point data)集进行索引。Bkd-Tree跟K-D-B-tree的理论部分在本篇文章中不详细介绍&#xff0c;对应的两篇论文在附件中&#xff0c…

【lodash.js】非常好用高性能的 JavaScript 实用工具库,防抖,深克隆,排序等

前言&#xff1a;lodash是一款前端必须要知道的js库&#xff0c;它里面提供了许多常用的功能和实用的工具函数 基本上我参与的项目中都有lodash&#xff0c;只能说lodash太强大了&#xff0c;lodash.js 提供了超过 300 个实用的工具函数&#xff0c;涵盖了很多常见的编程任务 l…

3D点云数据的标定,从搭建环境到点云标定方法及过程,只要有一台Windows笔记本,让你学会点云标定

ptscloudpre: 点云标定准备&#xff1a; 说明&#xff1a; 如下介绍适用windows系统的电脑。apple笔记本同理&#xff0c;但是需要安装MAC版本的anaconda。网址&#xff1a;Free Download | Anaconda可下载对应MAC版本的Anaconda的安装包建议下载2022年或2021年的安装包安装。…

华硕ASUS K43SD笔记本安装win7X64(ventoy为入口以支撑一盘多系统);友善之臂mini2440开发板学习

记录 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 1. MBR样式常规安装win7X64Sp1 (华硕 K43SD 安装 win7X64 ) 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 (常规安装) 设置: 禁用UEFI 启用AHCI ventoy制作MBR(非UEFI)方式的启动U盘 U盘中放cn_windows_7_ultimate_wit…

无限学模式-“重塑科研学习路径:ChatGPT应用实战课,开启高效率、高创新的科研之旅!“

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&#xff0c;提高编程效率和准确性。此外&#xff0c;ChatGPT是一位出色的合作伙伴&#xff0c;可以为您提供论文写作的…

YOLOv8全网独家首发:Powerful-IoU更好、更快的收敛IoU | 2024年最新IoU

💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数 💡💡💡MS COCO和PASCAL VOC数据集实现涨点 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.htm…

SkyWalking介绍与使用docker-compose部署服务

一、Skywalking概述 1、Skywalking介绍 Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等…

腾讯云轻量应用服务器Docker如何一键搭建属于自己的幻兽帕鲁服务器?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

【Image captioning】论文阅读七—Efficient Image Captioning for Edge Devices_AAAI2023

中文标题:面向边缘设备的高效图像描述(Efficient Image Captioning for Edge Devices) 文章目录 1. 引言2. 相关工作3. 方法3.1 Model Architecture(模型结构)3.2 Model Training (模型训练)3.3 Knowledge Distillation (知识蒸馏)4. 实验4.1 数据集和评价指标4.2 实施细…

【快影】怎么制作卡拉OK字幕

您好&#xff0c;您添加了字幕之后可以添加动画&#xff0c;选择卡拉OK&#xff0c;其中 卡拉OK1是支持修改颜色的&#xff0c;卡拉OK2只支持修改文字的底色。

Apache Shiro 安全框架

前言 Apache Shiro 是一个强大且容易使用的Java安全矿建&#xff0c;执行身份验证&#xff0c;授权&#xff0c;密码和会话管理。使用Shiro的易于理解的API您可以快速轻松的获得任何应用程序直到大的项目。 一丶什么是Shiro 1.Shiro是什么 Apache Shiro是一个强大且易于使用…

5.列表选择弹窗(BottomListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 从底部弹出的列表选择弹窗。 1.布局 <?xml version"1.0" encoding"utf-8" ?> <toolkit:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns…

防火墙在企业园区出口安全方案中的应用(ENSP实现)

拓扑图 需求&#xff1a; 1、企业出口网关设备必须具备较高的可靠性&#xff0c;为了避免单点故障&#xff0c;要求两台设备形成双机热备状态。当一台设备发生故障时&#xff0c;另一台设备会接替其工作&#xff0c;不会影响业务正常运行。 2、企业从两个ISP租用了两条链路&…