Harmony 应用开发常用布局介绍

news/2024/11/19 14:28:30/文章来源:https://www.cnblogs.com/brian512/p/18554771

在 Harmony 应用开发中,合理的布局是构建美观且易用界面的关键。以下是几种常用的布局方式。

1. Column 布局

  • 特点:Column 是一种垂直方向的线性布局容器。它将子组件按照从上到下的顺序依次排列。
  • 示例代码
      Column({ space: 5 }) {Text("Column")Button('Button 1')Button('Button 2')}.width('90%').borderRadius(16).borderColor(Color.Red).borderWidth(2).padding(10)

layout_column

2. Row 布局

  • 特点:与 Column 相反,Row 是水平方向的线性布局。子组件在水平方向上从左到右排列。
  • 示例代码
      Row({ space: 5 }) {Text("Row")ForEach(this.list, (index: number) => {Button('Button' + index)})}.width('100%').borderRadius(16).borderColor(Color.Red).borderWidth(2).padding(10)

layout_row

3. Stack 布局

  • 特点:Stack 布局允许子组件按照堆叠的方式排列。后添加的子组件会覆盖前面的子组件,可以通过设置 z - index 等属性来控制显示顺序。
  • 示例代码
      Stack({ alignContent: Alignment.Center }) {Image($r('app.media.app_icon')).width('100%').height('100%').objectFit(ImageFit.Contain)Stack({ alignContent: Alignment.BottomEnd }) {Image($r('app.media.app_icon')).height(30).width(30)}.width('100%').height('100%')Image($r('app.media.app_icon')).height(30).width(30).align(Alignment.BottomEnd)Stack({ alignContent: Alignment.TopStart }) {Text("Stack").fontSize(30).fontColor(Color.Red)}.width('100%').height('100%')}.width('90%').height(200).borderRadius(16).borderColor(Color.Red).borderWidth(2).padding(10)

layout_stack

4. Flex 布局

  • 特点:Flex 布局是一种更灵活的布局方式,它可以在水平和垂直方向上排列子组件,并且可以方便地设置对齐方式、伸缩比例等。
  • 示例代码(水平方向的 Flex 布局示例)
      Flex({direction: FlexDirection.Row,wrap: FlexWrap.Wrap,justifyContent: FlexAlign.SpaceBetween,alignItems: ItemAlign.Center,alignContent: FlexAlign.Center,}) {Text("Flex")ForEach(this.list, (index: number) => {Button('Button' + index).margin({ bottom: 5 })})}.width('90%').borderRadius(16).borderColor(Color.Red).borderWidth(2).padding(10)

layout_flex

5. RelativeContainer 布局

  • 特点:RelativeContainer 为采用相对布局的容器,支持容器内部的子元素设置相对位置关系,适用于界面复杂场景的情况,对多个子组件进行对齐和排列。子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局。
      RelativeContainer() {Text("RelativeContainer").alignRules({'left': { 'anchor': '__container__', 'align': HorizontalAlign.Start},'top': { 'anchor': '__container__', 'align': VerticalAlign.Top}})Image($r('app.media.watchGT4')).width(50).height(50).borderRadius(25).alignRules({'left': { 'anchor': '__container__', 'align': HorizontalAlign.Start},'top': { 'anchor': '__container__', 'align': VerticalAlign.Top},'bottom': { 'anchor': '__container__', 'align': VerticalAlign.Bottom},}).margin({left:15}).id("avatar")Text("Name").alignRules({'left': { 'anchor': 'avatar', 'align': HorizontalAlign.End},'top': { 'anchor': 'avatar', 'align': VerticalAlign.Top},'bottom':{ 'anchor': 'avatar', 'align': VerticalAlign.Bottom}}).margin({left:10})Button("关注").height(40).alignRules({'top': { 'anchor': '__container__', 'align': VerticalAlign.Top},'bottom': { 'anchor': '__container__', 'align': VerticalAlign.Bottom},'right': { 'anchor': '__container__', 'align': HorizontalAlign.End},}).margin({right:15})}.width('90%').height(100).borderRadius(16).borderColor(Color.Red).borderWidth(2).padding(10)

layout_relative

6. Grid 布局

  • 特点:Grid 布局是一种多列布局方式,它将屏幕分为多列,子组件按照指定的行数和列数进行排列。
  • 示例代码(Grid 布局示例)
        GridRow({breakpoints: {value: ['200vp', '300vp', '400vp', '500vp', '600vp'],reference: BreakpointsReference.WindowSize},columns: 60 // 共 60 列}) {ForEach(this.bgColors, (color: Color, index?: number | undefined) => {GridCol({span: {xs: 60, // 在最小宽度类型设备上,显示 1 项。sm: 30, // 在小宽度类型设备上,显示 2 项。md: 20, // 在中等宽度类型设备上,显示 3 项。lg: 15, // 在大宽度类型设备上,显示 4 项。xl: 12, // 在特大宽度类型设备上,显示 5 项。xxl: 10 // 在超大宽度类型设备上,显示 6 项。}}) {Row() {Text(`${index}`)}.width("100%").height('50vp')}.backgroundColor(color)})}.margin({left:15, right:15})

layout_gridrow


通过熟练掌握这些常用的布局方式,开发者可以高效地构建出符合设计要求的 Harmony 应用界面,为用户提供优质的交互体验。同时,参考官网文档中的详细说明和更多示例,可以进一步深入理解和优化布局设计。

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

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

相关文章

皮带跑偏识别智慧矿山一体机人员乘坐皮带识别提升矿山效率的智能化解决方案

在矿业领域,随着科技的不断进步,智能化转型已成为提升矿山安全性、效率和可持续性的关键。智慧矿山一体机的问世,正是这一转型的体现,它专为矿山环境设计,集成了多种前沿技术,以实现矿山作业的智能化管理。本文将详细介绍皮带跑偏识别智慧矿山一体机如何通过其先进的功能…

罐笼乘坐人员超限识别智慧矿山一体机斜井人员进出识别应用场景综述

在矿山行业中,安全始终是最重要的议题之一。随着工业4.0和智能化技术的发展,智慧矿山一体机应运而生,它不仅是一款设备,更是一个全面的解决方案,旨在通过智能化手段提升矿山的安全监管水平。本文将详细介绍斜井人员进出识别智慧矿山一体机的功能特点、技术优势以及在不同矿…

码元和码点的区别

charCodeAt与codePointAt的用法: 相同点:charCodeAt与codePointAt都是字符串实例上的方法,用途都是用来返回指定索引位字符的Unicode编码。不同点:charCodeAt与codePointAt匹配索引位的规则不一样。charCodeAt是根据码元来匹配,codePointAt是根据码点来进行匹配的。先举个…

CMDB平台(进阶篇):CMDB的构建指南(二)

CMDB(配置管理数据库)作为IT服务管理中的重要组成部分,其构建过程需要严谨且细致的规划。在CMDB的构建过程中,定义需求和创建IT服务模型蓝图是两个至关重要的阶段。本文将详细探讨这两个阶段,为CMDB的构建提供实用指南。 定义需求 定义需求是CMDB构建的首要步骤,其核心在…

Transformer Concept Exploration and Practice in Pytorch

This post explores the principles about the impressive transformer structure and for downstream tasks, such as machine translate, it achieves the full implementation and training details.Introduction Transformer 是一种广泛应用与自然语言处理的神经网络架构,…

PN-RT中的一些基础概念

以太网帧和时间直接的关系我们通常的描述的1Gbps/100Mbps/1000Mbps是什么意思:bps就是bit per second的意思,表示每秒支持多少个bit的传输速率。1Gbps就是某一个网卡最大支持用1G bit每秒的速率发送/接收bit流。1Gbps = 1 x 10^9 bit per second 1Mbps = 1 x 10^6 bit per se…

校园防欺凌预警系统 学生打架智能识别系统

校园防欺凌预警系统 学生打架智能识别系统在校园的卫生间、宿舍等容易发生欺凌行为的场所,安装AI语音防欺凌报警系统是十分必要的。校园防欺凌预警系统 学生打架智能识别系统能够实时监听周围的声音,一旦检测到异常求救关键词,系统会立即启动报警程序。系统会立刻将警情传送…

NSSM封装Windows服务工具的使用与介绍

NSSM 是一个服务封装程序,它可以将普通 exe 程序 或 Java程序 或 Nodejs 项目封装成服务,像 windows 服务一样运行。同类型的工具还有微软自己的 srvany,不过 NSSM 更加简单易用,并且功能强大。它的特点如下: 支持普通 exe 程序(控制台程序或者带界面的 Windows 程序都可…

AI 实战篇:Spring-AI再更新!细细讲下Advisors

在2024年10月8日,Spring AI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层。目前,Spring AI仍处于小众状态,尚未经过开源社区多年的维护和稳定化过程,这与已经较为成熟的Spring框架形成鲜明对…

充电桩车位长时间占用识别系统

充电桩车位长时间占用识别系统利用充电站现场装好的监控摄像头, 充电桩车位长时间占用识别系统24小时对监控区域内的车位进行实时监测。当检测到燃油车占用充电桩车位,并且停车时长超过指定时间时将产生报警,并自动识别车牌号。一旦系统产生报警,它将识别车牌号,并将报警信…

接口控制器层(Controller层)设计(网文)

在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用。 那么问题来了,如果设计一个优雅的Controller接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求? 今天跟大家一起聊聊设计…

橙啦视频课件课程下载工具,如何在电脑端下载橙啦视频课程课件资料PDF,PPT到本地?

一. 安装橙啦课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/orangevip_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学无止下…