当前位置: 首页 > news >正文

鸿蒙HarmonyOS NEXT 5.0开发(2)—— ArkUI布局组件

文章目录

  • 布局
    • Column:从上往下的布局
    • Row:从左往右的布局
    • Stack:堆叠布局
    • Flex:自动换行或列
  • 组件
    • Swiper
    • 各种选择组件

  • 华为官方教程
  • B站视频教程

布局

主轴和交叉轴的概念:

  • 对于Column布局而言,主轴是垂直方向,交叉轴是水平方向
  • 对于Row布局而言,主轴是水平方向,交叉轴是垂直方向
    在这里插入图片描述

Column:从上往下的布局

在这里插入图片描述

@Entry
@Component
struct Layouts {@State message: string = 'Hello World';build() {/*column:从上往下的布局{space:5}对应每个组件有.margin({top:5})* 对齐问题:*   主轴:从上往下的方向*   交叉轴:横向的为交叉轴*/Column({space: 5}) {Text("你好,鸿蒙Next")// 组件的基础属性,宽度、高度、边框设置.width(150).height(50).border({width:1,color: 'red'})Text("你好,鸿蒙Next").width(150).height(50).border({width:1,color: 'red'})Text("你好,鸿蒙Next").width(150).height(50).border({width:1,color: 'red'})}.width(300).height(500).border({color: 'green', width:2})// 设置交叉轴方向的对齐:Start、Center、End.alignItems(HorizontalAlign.Start)// 设置主轴方向的对齐:Start、End、Center、SpaceBetween、SpaceAround、SpaceEvenly.justifyContent(FlexAlign.SpaceEvenly)}
}

在这里插入图片描述

@Entry
@Component
struct Layouts {@State message: string = 'Hello World';build() {/*用column实现登陆界面*/Column({space:15}) {Image($r('app.media.startIcon')).width(150)TextInput({placeholder: '请输入账号: '})TextInput({placeholder: '请输入密码: '}).type(InputType.Password)Button('登陆')// 写函数去实现交互.onClick(()=>{// 创建一个对象,可以用字面量来写,需要该进成接口或类let obj: User = {name: "",pwd: ''}let user: UserInfo | null = nullAlertDialog.show({ message: JSON.stringify(user) })}).width('100%')Row() {Text('忘记密码?')Blank(30)Text('注册')}}.height('100%').width('100%').padding(20)}
}interface User {name: stringpwd: string
}class UserInfo {name: string = ''pwd: string = ''// constructor(name: string, pwd: string) {//   this.name = name;//   this.pwd = pwd;// }
}

Row:从左往右的布局

在这里插入图片描述

@Entry
@Component
struct Layouts {@State message: string = 'Hello World';build() {Column() {/*Row():行布局,从左往右的布局* 主轴:水平方向(justifyContent)* 交叉轴:垂直方向(alignItems)*/Row({space:5}) {Text('用户名:').width(70).height(60)TextInput({placeholder: '请输入用户名:'}).width(150).height(50)}.width('100%').justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Top)Row({space:5}) {Text('手机号:').width(70).height(60)TextInput({placeholder: '请输入手机号码:'}).width(150).height(50)}.width('100%')// 主轴对齐:Start、Center、End、SpaceBetween、SpaceAround、SpaceEvenly.justifyContent(FlexAlign.Center)// 交叉轴对齐:Top、Center、Bottom.alignItems(VerticalAlign.Top)}.height('100%').width('100%')}
}
  • 融合示例
    在这里插入图片描述
@Entry
@Component
struct Layouts {@State message: string = 'Hello World';build() {Row() {Column({space: 5}) {Text('GucciT恤')Text('价格美丽,上身快乐')}.justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Start).padding(20)Row() {Image($r('app.media.startIcon')).width(50)Image($r('app.media.top_diversion_entrance')).width(50)}}.height(70).width('100%').border({color: '#cccccc', width: 2}).justifyContent(FlexAlign.SpaceBetween).backgroundColor('#eeeeee')}
}

Stack:堆叠布局

层叠布局的居中设置
在这里插入图片描述
在这里插入图片描述

@Entry
@Component
struct Layouts {@State message: string = '层叠布局';build() {/*Stack():层叠布局* 可以重叠放置多个*/Stack({alignContent: Alignment.Center}) {Text('1').width(400).height(400).backgroundColor(Color.Green)// 层级关系设置的属性.zIndex(3)Text('2').width(300).height(300).backgroundColor(Color.Blue).zIndex(10)Text('3').width(200).height(200).backgroundColor(Color.Pink).zIndex(199)}.height('100%').width('100%')}
}
  • 页面跳转
    在这里插入图片描述
import { router } from '@kit.ArkUI';@Entry
@Component
struct Layouts {@State message: string = '层叠布局';// 定时器执行总时间:@State 变量状态会同步更新@State time: number = 5// 定时器句柄timer: number = -1// 页面显示之前执行aboutToAppear(): void {this.timer = setInterval(()=>{if (this.time <= 0) {clearInterval(this.timer)// 路由功能:倒计时结束后跳转到另一个界面router.replaceUrl({url: 'pages/SignPage'})}this.time--}, 1000)}aboutToDisappear(): void {//清除定时器clearInterval(this.timer)}build() {/*Stack():层叠布局* 可以重叠放置多个*/Stack({alignContent: Alignment.TopEnd}) {Image($r('app.media.startIcon'))Button('跳过'+ this.time).backgroundColor('#ccc').fontColor('#fff')}.height('100%').width('100%')}
}

Flex:自动换行或列

  • 弹性布局的基础设置
    在这里插入图片描述
    在这里插入图片描述
import { router } from '@kit.ArkUI';@Entry
@Component
struct Layouts {build() {/*Flex():弹性布局* 也存在主轴和交叉轴的概念,根据direction来决定,默认是Row()行布局*/Flex({direction: FlexDirection.Row,justifyContent: FlexAlign.SpaceBetween,alignItems: ItemAlign.Start}) {Text('1').width(60).backgroundColor(Color.Yellow)Text('2').width(60).backgroundColor(Color.Pink)Text('3').width(60).backgroundColor(Color.Green)}.height('100%').width('100%')}
}

在这里插入图片描述

import { router } from '@kit.ArkUI';@Entry
@Component
struct Layouts {build() {/*Flex():弹性布局* 也存在主轴和交叉轴的概念,根据direction来决定,默认是Row()行布局* 优势:可通过wrap去自动换行*/Flex({direction: FlexDirection.Row,wrap: FlexWrap.Wrap}) {Text('C++').width(60).backgroundColor('#ccc').margin(10).padding(15)Text('Java').width(60).backgroundColor('#ccc').margin(10).padding(15)Text('Python').width(60).backgroundColor('#ccc').margin(10).padding(15)Text('大数据').width(60).backgroundColor('#ccc').margin(10).padding(15)Text('Hadoop').width(60).backgroundColor('#ccc').margin(10).padding(15)Text('人工智能').width(60).backgroundColor('#ccc').margin(10).padding(15)}.height('100%').width('100%')}
}

组件

Swiper

@Entry
@Component
struct Layouts {swipCtl: SwiperController = new SwiperController()build() {Column() {Swiper(this.swipCtl) {Image($r('app.media.layered_image'))Image($r('app.media.layered_image'))Image($r('app.media.layered_image'))Image($r('app.media.layered_image'))}.loop(true).autoPlay(true).interval(300)Row() {Button('<').onClick(()=>{this.swipCtl.showPrevious()})Button('>').onClick(()=>{this.swipCtl.showNext()})}}}
}

各种选择组件

在这里插入图片描述

import { router } from '@kit.ArkUI';@Entry
@Component
struct Layouts {@State message: string = '用户注册'addList: SelectOption[] = [{value:'长沙'}, {value:'广州'}, {value:'上海'}, {value:'北京'}]build() {Column() {Text(this.message).id('RegUserPageHelloWorld').fontSize(50).fontWeight(FontWeight.Bold)Divider().width('100%').vertical(false).height(5).color(Color.Green)// 单选组件Row({space:20}) {Text('性别:').fontSize(10).fontWeight(FontWeight.Medium)Radio({value: 'male', group: 'sexGroup'}).checked(true).width(20).height(20)Text('男')Radio({value: 'female', group: 'sexGroup'}).checked(true).width(20).height(20)Text('女')}// 下拉选择框Row({space: 20}) {Text('地址').fontSize(20).fontWeight(FontWeight.Medium)Select(this.addList).width('80%').selected(2).value('请选择地址').fontColor('#182431').onSelect((index, value)=>{console.log('ken', index, value)})}// 复选框Row({space: 20}) {Text('爱好:').fontSize(20).fontWeight(FontWeight.Medium)Checkbox({name: 'chkSing', group: "loveGroup"})Text('唱歌').fontSize(14).fontColor('#182431').fontWeight(500)Checkbox({name: 'chkDance', group: "loveGroup"}).onChange((value)=>{//})Text('跳舞').fontSize(14).fontColor('#182431').fontWeight(500)}// 日期选择框Row({space: 20}) {Text('生日:').fontSize(20).fontWeight(FontWeight.Medium)DatePicker({start: new Date()}).height(60).width('50%').onDateChange((value) => {//})}}.width('100%').height('100%')}
}
  • 更多组件和布局参考官方文档:UI开发(ArkUI)

相关文章:

鸿蒙HarmonyOS NEXT 5.0开发(2)—— ArkUI布局组件

文章目录 布局Column&#xff1a;从上往下的布局Row&#xff1a;从左往右的布局Stack&#xff1a;堆叠布局Flex&#xff1a;自动换行或列 组件Swiper各种选择组件 华为官方教程B站视频教程 布局 主轴和交叉轴的概念&#xff1a; 对于Column布局而言&#xff0c;主轴是垂直方…...

【openGauss】OPENGAUSS/POSTGRESQL 中float类型到int类型的隐式转换

下面这条sql在oracle和POSTGRESQL/OPENGAUSS中的查询结果不一致 select cast(cast(0.5 as float) as integer);在oracle中返回1&#xff0c;在openGauss中返回0&#xff0c;咋一看好像是openGauss中使用了截断的方式,但是如果执行 select cast(cast(1.5 as float) as integ…...

Docker:安装 Syslog-ng 的技术指南

1、简述 Syslog-ng 是一种流行的日志管理工具&#xff0c;能够集中处理和分析日志。通过 Docker 安装 Syslog-ng 可以简化部署和管理过程。本文将介绍如何使用 Docker 安装 Syslog-ng&#xff0c;并提供一个 Java 示例来展示如何将日志发送到 Syslog-ng。 2、安装 2.1 创建…...

即插即用的3D神经元注意算法!

本文所涉及所有资源均在 传知代码平台 可获取。 目录 3D神经元注意力&#xff1a;为每一个神经元分配权重&#xff01;&#xff08;算法&#xff09; 一、概述 二、研究背景 三、主要贡献 四、模型结构和代码 五、数据集介绍 六、性能展示 六、复现过程 七、运行过程 SimAM总结…...

FPGA 蜂鸣器 音乐播放器

点击&#xff1a; FPGA 蜂鸣器音乐播放器 基于FPGA的beep音乐播放器设计 FPGA&#xff08;Field Programmable Gate Array&#xff09;蜂鸣器音乐播放器是一个将FPGA编程用于控制蜂鸣器播放音乐的设备。下面是一个简单的实现步骤和思路&#xff1a; 一、硬件准备 FPGA开发板…...

前端-基础CSS总结常用

1.书写位置:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。 <title>CSS 初体验</title> <style>/* 选择器 { } */p {/* CSS 属性 */color: red;} </style><p>体验 CSS</p> <link rel="stylesheet" href=…...

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 一 标定板的制作生成标定的PDF文件PDF转为图像格式图像加载到仿真中 二 仿真场景设置加载机器人加载的控制dummy ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b48549d355d8441d8dfc20bc7ba7196…...

CSS常见面试题

&#x1f3af;CSS常见面试题 1.CSS的盒模型2.CSS选择器的优先级3.隐藏元素的方法有哪些&#xff1f;4.px和rem的区别是什么&#xff1f;5.重绘排版有什么区别&#xff1f;6.让一个元素水平垂直居中的方式有哪些&#xff1f;7.CSS的哪些属性可以继承&#xff1f;哪些不可以继承&…...

ChatGPT实现旅游推荐微信小程序

随着旅游行业的快速发展&#xff0c;个性化推荐已成为提升用户体验的重要手段。通过AI技术&#xff0c;提供一个智能旅游推荐小程序&#xff0c;使用户能够轻松获取定制化的旅行建议。 项目概述 项目目标 开发一个AI旅游推荐小程序&#xff0c;基于用户输入的旅行偏好&#…...

基于单片机的智能小区门禁系统设计(论文+源码)

1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心&#xff0c;STM32单片机作为主控单元&#xff0c;通过WiFi模块实现与手机APP的连接&#xff0c;构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…...

stm32F103 实现呼吸灯效果

目录 硬件连接 软件实现步骤 初始化系统时钟。 配置 GPIO 引脚。 配置定时器以生成 PWM 信号。 在主循环中调整 PWM 占空比以实现呼吸效果。 示例代码 1. 初始化系统时钟 2. 配置 GPIO 引脚 3. 配置定时器以生成 PWM 信号 4. 在主循环中调整 PWM 占空比以实现呼吸效…...

SAP 为 Copilot Joule 增添协作功能

在最新的SAP TechEd大会上&#xff0c;SAP发布了一系列创新功能&#xff0c;旨在扩展其AI平台Joule的能力&#xff0c;同时推出了其他工具&#xff0c;以提高企业效率并为开发人员提供更多支持。这些创新不仅将推动AI驱动的业务转型&#xff0c;还将加强数据的利用和简化开发流…...

Node.js 模块化

1. 介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则&#xff08;规范&#xff09;拆分成多个文件的过程称之为 模块化其中拆分出的 每个文件就是一个模块 &#xff0c;模块的内部数据是私有的&#xff0c;不过模块可以暴露内部数据以便其他模块使用 1.2 什…...

【部署篇】RabbitMq-03集群模式部署

一、准备主机 准备3台主机用于rabbitmq部署&#xff0c;文章中是在centos7上安装部署rabbitmq3.8通过文章中介绍的方式可以同样在centos8、centos9上部署&#xff0c;只需下载对应的版本进行相同的操作。 主机IP角色说明192.168.128.31种子节点192.168.128.32普通节点192.16…...

【硬啃Dash-Fastapi-Admin】03-requirements-pg.txt 速览

文章目录 dash2.18.1 纯Python的Web应用框架Python Dash库的功能介绍和用法示例功能介绍用法示例 Flask-Compress1.15 Flask响应数据的压缩功能介绍用法示例注意事项 feffery-antd-charts0.1.0rc5 数据可视化组件库功能介绍用法示例 feffery-antd-components0.3.8 Dash 第三方组…...

【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?

.NET版本问题 报错示例报错分析最简单的方法步骤 报错示例 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标&#xff0c;或使用支持 .NET 6.0 的 .NET SDK 版本。 ABFview C:\x…...

系统登录接口文档Demo

接口描述 该接口用于用户登录验证。通过用户名和密码进行身份验证&#xff0c;成功后返回一个用于后续请求的认证 token。这个 token 是访问受保护资源的凭证。 时序图&#xff1a; 登录请求&#xff1a; 登录查询接口: POST {url}/api/user/login 请求体: {"username…...

gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件

结合 Logrus 和 Lumberjack&#xff0c;可以创建一个高效的日志中间件&#xff0c;用于记录请求和响应。以下是实现步骤&#xff1a; 1. 安装依赖 首先&#xff0c;确保安装了 Logrus 和 Lumberjack&#xff1a; go get github.com/sirupsen/logrus go get gopkg.in/natefin…...

kube-prometheus-stack 自定义 alertmanager 配置推送webhook

创建AlertmanagerConfig资源 在没有使用 prometheus-operator 的情况下&#xff0c;需要手动配置 alertmanager.yaml 来路由&发送从 prometheus 接收的警报。 使用 prometheus-operator 之后&#xff0c;事情变得简单一些。只需要创建 AlertmanagerConfig 资源&#xff0…...

openssl签名报错

在调用RSA_private_encrypt函数时遇到如下报错。 0:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:309:TypeX509 0:error:2406C06E:random number generator:RAND_DRBG_instantiate:error retrieving entropy:crypto/…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...