UI(三)布局

文章目录

          • 1、Colum和Row——垂直方向容器和水平方向容器
          • 2、ColumnSplit和RowSplit——子组件之间插入一条分割线
          • 3、Flex——弹性布局子组件的容器
          • 4、Grid和GridItem——网格容器和网格容器单元格
          • 5、GridRow和GridCol——栅格容器组件和栅格子组件
          • 6、List、ListItem、ListItemGroup——列表 、列表单条、列表item分组
          • 7、AlphabetIndexer——与容器组件联动进行快速定位
          • 8、Badge——信息标记的气泡
          • 9、Counter——计算器组件

1、Colum和Row——垂直方向容器和水平方向容器
space子组件水平或者垂直方向的间距
alignItem水平或者垂直方向的对齐
justifyContent水平或者垂直方向的对齐
//水平设置组件的间距为30
Row({space:30}){   //sapce表示元素间的间距Row().width('30%').height(50).backgroundColor(Color.Yellow)Row().width('30%').height(50).backgroundColor(Color.Blue)
}.width('100%').height('10%').border({width:1,color:Color.Red})//设置子元素垂直方向的对齐方式
Row(){Row().width('30%').height(50).backgroundColor(Color.Green)Row().width('40%').height(50).backgroundColor(Color.Pink)
}.width('100%').height('10%').alignItems(VerticalAlign.Bottom).border({width:1,color:Color.Black})//设置谁品方向的对齐
Row(){Row().width('30%').height(50).backgroundColor(Color.Pink)Row().width('30%').height(50).backgroundColor(Color.Brown)
}.width('100%').height('10%').justifyContent(FlexAlign.Start).border({width:1,color:Color.Red})

image.png

2、ColumnSplit和RowSplit——子组件之间插入一条分割线

ColumnSplit 横向分割线 rowSplit纵向分割线

RowSplit(){Text('沉舟侧畔千帆过').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('病树前头万木春').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('今日听君歌一曲').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('暂凭杯酒长精神').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})
}
.resizeable(true)
.width('90%')
.height(400)

image.png

3、Flex——弹性布局子组件的容器
direction子组件在Flex容器上排列的方向,即主轴方向
wrapFlex容易以单行单列,还是多行多列
justifyContent子组件在Flex容器主轴上的对齐格式
alignItems子组件在Flex容器交叉轴上的对齐格式
alignContent交叉轴中有额外的空间时,多行内容的对齐方式,仅在wrap为wrap或者wrapReverse时生效
Flex({direction:FlexDirection.Row,wrap:FlexWrap.Wrap,alignContent:FlexAlign.Center}){Text('沉舟侧畔千帆过').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('病树前头万木春').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('今日听君歌一曲').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})Text('暂凭杯酒长精神').width('10%').height(400).backgroundColor(Color.Red).fontColor(Color.White).padding({left:8,right:8})}
.height(400)
.width('100%')
.backgroundColor(Color.Pink)

image.png

4、Grid和GridItem——网格容器和网格容器单元格
 Grid(){ForEach(this.numsArr,(index:string) => {GridItem(){Text(index).fontSize(20).backgroundColor(Color.Pink).width('100%').height('100%').textAlign(TextAlign.Center)}},index => index)}/*** columnsTemplate 用来设置当前网格布局列的数量 ,不设置时默认为1列* ‘1fr 1fr 1fr 2fr’ 表示将父组件分为4列,前三分各占1列,第四份占两列*/.columnsTemplate('1fr 1fr 1fr 1fr 2fr')  // 设置当前网格布局列的数量.rowsTemplate('1fr 1fr 1fr 1fr 1fr')  // 设置网格布局行的数量.columnsGap(10).rowsGap(20).width('90%').backgroundColor(Color.Yellow).height(300)

image.png

5、GridRow和GridCol——栅格容器组件和栅格子组件

GridRow栅格容器组件 仅可以和栅格子组件GridCol在栅格布局场景中使用


private colorArr: Color[] = [Color.Red,Color.Blue,Color.Brown,Color.Green,Color.Orange,Color.Pink,Color.Grey];GridRow({columns:5,   //设置布局列数gutter:{x:5,y:20}, //栅格布局间距,X代表水平方向 Y代表垂直方向breakpoints:{value:['400vp','600vp','800vp'], //断点发生变化时触发回调reference:BreakpointsReference.WindowSize},direction:GridRowDirection.RowReverse  // 栅格布局排列方向
}){ForEach(this.colorArr,(color) => {GridCol({span:{xs:1,sm:2,md:3,lg:4}}){Row().width('100%').height('80vp')}.borderColor(color).borderWidth(2).backgroundColor(color)})
}.width('100%').height('100%')

image.png

6、List、ListItem、ListItemGroup——列表 、列表单条、列表item分组

List可以包含ListItem和ListItemGroup子组件,ListItem用来展示列表具体Item,必须配合List来使用,ListItemGroup组件用来展示列表item分组,宽度默认充满List组件,必须配合List组件来使用。


private classListData: any = [{title:'周一',projects:['语文','数学','音乐']},{title:'周二',projects:['化学','政治','地理']},{title:'周三',projects:['体育','计算机','数学']},{title:'周四',projects:['音乐','美术','历史']}]List({space:2}){ForEach(this.classListData,(item) => {ListItemGroup(){ForEach(item.projects,(projects) => {ListItem(){Text(projects).width('100%').height(30).fontSize(20).textAlign(TextAlign.Center)}}, item => item)}.borderRadius(2).divider({strokeWidth:2,color:Color.Blue})  //ListItemGroup分割线})
}
.divider({strokeWidth:5,color:Color.Red}) //List分割线
.width('100%')

image.png

7、AlphabetIndexer——与容器组件联动进行快速定位

AlphabetIndexer是可以与容器组件联动用于按逻辑结构快速定位容器显示区域的组件。

private alphabetIndexerArrayA: string[] = ['安']
private alphabetIndexerArrayB: string[] = ['卜', '白', '包', '毕', '丙']
private alphabetIndexerArrayC: string[] = ['曹', '成', '陈', '催']
private alphabetIndexerArrayL: string[] = ['刘', '李', '楼', '梁', '雷', '吕', '柳', '卢']
private alphabetIndexerArrayValue: string[] = ['#', 'A', 'B', 'C', 'D', 'E', 'F', 'G','H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P', 'Q', 'R', 'S', 'T', 'U','V', 'W', 'X', 'Y', 'Z']Row(){List({space:10,initialIndex:0}){ForEach(this.alphabetIndexerArrayA,(item) => {ListItem(){Text(item).width('100%').height('5%').fontSize(20).textAlign(TextAlign.Center)}},item => item)ForEach(this.alphabetIndexerArrayB,(item) => {ListItem(){Text(item).width('100%').height('5%').fontSize(20).textAlign(TextAlign.Center)}},item => item)ForEach(this.alphabetIndexerArrayC,(item) => {ListItem(){Text(item).width('100%').height('5%').fontSize(20).textAlign(TextAlign.Center)}},item => item)ForEach(this.alphabetIndexerArrayL,(item) => {ListItem(){Text(item).width('100%').height('5%').fontSize(20).textAlign(TextAlign.Center)}},item => item)}.width('50%').height('100%')AlphabetIndexer({arrayValue:this.alphabetIndexerArrayValue,selected:0}).selectedColor(Color.Red)   //选中框文本颜色.popupColor(Color.Blue)   // 弹出框文本颜色.selectedBackgroundColor(Color.Yellow)  //选中框北京颜色.popupBackground(Color.Green) //弹出框背景颜色.usingPopup(true)   //是否使用弹出框.selectedFont({size:16,weight:FontWeight.Bolder}) //选中字体设置.popupFont({size:30,weight:FontWeight.Bold}) // 弹出字体设置.itemSize(28).alignStyle(IndexerAlign.Left)   //弹出框在索引条左侧弹出.onRequestPopupData((index:number) => {if(this.alphabetIndexerArrayValue[index] == 'A'){return this.alphabetIndexerArrayA}else if(this.alphabetIndexerArrayValue[index] == 'B'){return this.alphabetIndexerArrayB}else if(this.alphabetIndexerArrayValue[index] == 'C'){return this.alphabetIndexerArrayC}else if(this.alphabetIndexerArrayValue[index] == 'L'){return this.alphabetIndexerArrayL}else {return []}})}.width('100%').height('100%')

格式工厂 屏幕录像20240627_171006 00_00_02-00_00_15.gif

8、Badge——信息标记的气泡

Badge是可以附加在单个组件上用于信息标记的容器组件
构造函数主要有四个参数

count设置提示消息数
position设置提示点的位置(RightTop,Right,Left)
maxCount最大消息数,超过最大消息数则显示最大消息数
style样式,支持文本颜色和尺寸以及圆点颜色和尺寸
Badge({value:'5',style:{badgeSize:16,badgeColor:Color.Red}
}){Image($r('app.media.icon')).width(60).height(60)
}Badge({value:'new',position:BadgePosition.Left,style:{badgeColor:Color.Blue,badgeSize:20}
}){Text('消息数量').fontSize(20).width(160).height(40)
}
.width(160)
.height(40)

image.png

9、Counter——计算器组件

counter是计数器组件,提供相应的增加或者减少的计数操作

Counter(){Text(this.countNum.toString())
}
.margin(20)
.onInc(() => {   //监听数值增加事件this.countNum++})
.onDec(() => {  //监听数值减小事件this.countNum--
})

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

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

相关文章

Mac OS 安装frida

安装frida和frida-tools Python是基础,提前装好Python 终端执行 python3 -m pip install frida 如果出现error 按照提示处理 信息提示:brew install pipx 于是终端执行: brew install pipx 安装frida: pipx install frida…

华宽通中标长沙市政务共性能力建设项目,助力智慧政务建设新飞跃

在数字化浪潮的推动下,长沙市政府正积极拥抱智慧城市建设,以科技力量提升政务服务效能。华宽通凭借其卓越的技术实力与丰富的项目经验,成功中标长沙市政务共性能力建设项目,这无疑是对华宽通在智慧城市领域实力的高度认可。 华宽…

Mind+在线图形编程软件(Sractch类软件)

Scratch作为图形编程软件,可以为小朋友学习编程提供很好的入门,是初次接触编程的小朋友的首选开发软件。这里介绍的Mind软件与Sractch用法几乎完全一致,并且可以提供在线免安装版本使用,浏览器直接打开网址: ide.mindp…

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品 纳米硅(SiNP)指尺寸在纳米尺度范围内的硅颗粒。纳米硅具有光吸收谱宽、表面活性高、比表面积大、机械强度高、电学性能好等优势,在石油化工、建筑工程、电子电…

TypeError: %c requires int or char

踩坑:在用python写脚本查询sql数据时,使用%s来替换sql语句里的变量,结果一直报,而其他sql使用同样的方法正常,最后发现是因为sql语句里有模糊查询 like "%测试%",这里的%被误以为%s,解…

PostgreSQL安装教程及文件介绍

Ubuntu 安装和配置 PostgreSQL 以 Ubuntu Server 20.04,PostgreSQL 12 版本为例。 1. 安装 使用如下命令,安装指定版本的 PostgreSQL sudo apt install postgresql-12在 Ubuntu 20.04 中安装 PostgreSQL 登录您的 Ubuntu 系统并使用以下 apt 命令更新…

ADI-DSP|在指定内存写入数据

一、LDF文件设置内存空间 user_data_test { TYPE(BW RAM) START(0x00380010) END(0x0039bfff) WIDTH(8) }//usr data dxe_user_data_bw BW{INPUT_SECTION_ALIGN(4)INPUT_SECTIONS( $OBJS_LIBS(user_data) )} > user_data_test 二、在C文件中设置数据 /************…

20240628 每日AI必读资讯

📚 Hugging Face 推出新版开源大模型排行榜,中国模型 Qwen-72B 夺冠 - 阿里Qwen-2-72B指令微调版本问鼎全球开源大模型排行榜榜首 - Llama-3-70B 微调版本排名第二,而 Mixtral-8x22B 微调版本位居第四。 - 另外,微软的 Phi-3-M…

cad报错:由于找不到vcruntime140.dll无法继续执行代码

在现代的工程设计中,计算机辅助设计(CAD)软件已经成为了工程师们不可或缺的工具。然而,在使用CAD软件的过程中,有时我们会遇到一些问题,其中之一就是“找不到vcruntime140.dll”的错误提示。本文将详细介绍…

on ubuntu server install jupyter lab

一、安装jupyter lab conda search jupyterlab 根据base的python版本,选择对应的版本 conda install jupyterlab3.0.14 该方法优点是可以快速的启动JupyterLab,缺点是需要记住大量参数写法。以下是一些常见参数的说明: --ip* 设置可访问的I…

基于Flask开发的前后端交互项目(可用于期末大作业) MySQL数据库 文件上传 Spider爬虫 Echarts可视化展示 JS动态

项目描述: 开发一个基于Flask框架开发的前后端交互项目,项目内容为 东京奥运会 。对各个需要填写的字段做了数据验证,非法信息会被JS拦截提醒不合法;还对未登录就访问做了拦截,阻止未登录就访问。 前端:HT…

【数据结构】(C语言):动态数组

动态数组: 内存区域连续,即每个元素的内存地址连续。可用索引查看元素,数组[索引号]。指定位置删除元素,该位置之后的元素全部往前移动一位。指定位置添加元素,从最后到该位置的元素全部往后移动一位。物理大小&#…

冷门赛道,视频号励志语录赛道详解,新手轻松上手

大家好,我是闷声轻创,在当今数字化时代,社交媒体已成为人们获取信息、分享生活和实现个人价值的重要渠道。视频号,作为新兴的短视频平台,以其独特的优势和巨大的流量潜力,吸引了众多创作者的目光。今天我将…

防近视台灯有效果吗?专业护眼台灯推荐!告诉你台灯怎么选

随着学业负担的加重和电子设备的广泛普及,近视问题在青少年群体中愈发凸显,近视率持续走高。导致近视的因素错综复杂,除了过度使用手机外,遗传因素、不良的用眼习惯、环境因素、营养不均衡以及学习压力等均为重要因素,…

c++习题01-ljc的暑期兼职

目录 一,题目描述 二,思路 三,伪代码 四,流程图 五,代码 一,题目描述 二,思路 1,根据题目要求需要声明4个变量:a,b,c,d ;牛奶价格a,活动要求b&…

Advantest 93000测试机中CLOCK DOMAIN 详解

爱德万测试(Advantest)的V93000系列测试系统是一个高度模块化和可扩展的平台,专为复杂和高性能的半导体器件测试而设计,包括系统级芯片(SoC)、存储器、射频(RF)和混合信号器件等。在…

C++语法20 一维数组及其相关问题详解

这是《C算法宝典》语法入门篇的第20节文章啦~ 如果你之前没有太多C基础,请点击👉专栏:C语法入门,如果你C语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏&…

基于Java的宠物领养管理系统【附源码】

摘 要 近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,宠物管理系统利用计算机网络实现信息化管理,使整个宠物领养的发展和服务水平有显著提升。 本文拟采用IDEA开发工具…

ELK集群设置密码

一、软件安装清单 elasticsearch7.17.22logstash7.17.22kibana:7.17.22filebeat7.17.22elasticsearch-head:5 二、配置 生成证书 进入elasticsearch容器 bin/elasticsearch-certutil cert -out /usr/share/elasticsearch/config/elastic-certificates.p12 -pass将证书拷贝…

探秘10个顶尖设计的秘密

本文为大家盘点了 10 个优秀的个人网页作品,均来自于即时设计的资源广场。网页设计往往是一个复杂的过程,从前期的调研整理到后来的设计制作,往往需要设计师们投入大量的心血。今天就为大家分享来自即时设计的 10 个不同类型的优秀网页作品&a…