UI(三)布局

news2024/11/16 6:47:51

文章目录

          • 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.coloradmin.cn/o/1869547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“一站式企业服务平台”全景解析

在当今市场竞争日益激烈、商业环境瞬息万变的大经济环境下,企业在经营过程中常常面临政策不知道摸不清、资源获取困难、融资渠道狭窄、市场开拓不畅、政务办理繁琐等诸多问题,为了解决这些问题,帮扶企业发展,同时优化区域营商环境…

JavaWeb系列三: JavaScript学习 下

文章目录 js数组定义方式数组遍历 js函数函数入门函数使用方式使用方式一使用方式二 函数注意事项函数练习题 定义对象使用object定义使用{}定义 事件onload事件onclick事件失去焦点事件内容发生改变事件表单提交事件静态注册动态注册表单作业 dom对象文档对象模型document对象…

Oracle ACE夜话--和首席-总监一起跟大家谈一谈分布式数据库发展

前言 在昨日的Oracle ACE夜话中,和薛首席、尹总监一起聊了下当前分布式数据库的内容,现将分享内容又进行了相应整理,分享给大家,也希望大家多多指正。 一、自我介绍 尚雷,公众号【尚雷的驿站】,PG ACE&a…

矩阵新玩法,云微客AI矩阵系统开启新营销大门

在激烈的市场竞争中,商家企业们都在追求更加高效的营销方式,在如今流量至上的时代,短视频凭借其魅力,成为了众多企业吸引流量、获客引流的核心营销途径。而想要挤进短视频流量圈的你,是否经常听到矩阵这个词呢&#xf…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片?在工程设计、建筑设计、机械设计等领域,CAD图纸的编辑和分享是一项日常工作。然而,如何将CAD图纸高效、准确地导出为图片格式,一直是设计师们关注的焦点。今天,就为大家推荐四款强大的CAD导出图片软…

Java web应用性能分析之【prometheus监控指标体系】

Java web应用性能分析之【系统监控工具prometheus】_javaweb服务器性能监控工具-CSDN博客 Java web应用性能分析之【prometheusGrafana监控springboot服务和服务器监控】_grafana 导入 prometheus-CSDN博客 因为篇幅原因,前面没有详细说明Prometheus的监控指标&…

clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装

前言: 总共需要2个u盘,一个装再生龙系统,一个是使用再生龙把硬盘备份到另一个盘里面,恢复的时候,先使用再生龙引导,然后再插上盘进行复制 1.制作启动u盘 1.1下载再生龙Clonezilla 下載 1.2下载UltraISO(https://cn.ultraiso.net/uiso9_cn.exe) 1.3 打开UltraISO,选择co…

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上,可以配合Native Window创建OpenGL开发环境,并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板,调用OpenGL ES图形库绘制3D图形&…

智慧校园-宿舍管理系统总体概述

在教育信息化的不断推动下,智慧校园宿舍管理系统脱颖而出,它以一种全新的视角和方式,重塑了高校宿舍管理的传统模式。该系统深度融合了云计算、物联网、大数据等先进科技,旨在为学生提供一个既安全可靠又充满便捷与温馨的居住体验…

实现设计开挂|如何设计出坚不可摧的网球拍?

数字揭秘 我们发现自己可能偶尔会以过激的方式表达沮丧或愤怒,哪怕是在公共场合。就算是世界级的网球运动员也无法避免偶尔的情绪爆发,他们有时会砸球拍来释放被压抑的情绪或应对来自竞赛的压力。 网球运动员的情绪爆发已被证明是不可避免的。哪怕是包括…

Transformer教程之Transformer的历史背景

在现代人工智能领域,Transformer模型已经成为一种不可或缺的技术,它在自然语言处理(NLP)和计算机视觉等多个领域取得了巨大的成功。本文将带你回顾Transformer的历史背景,了解它是如何从最初的构想到今天的广泛应用的。…

SpringBoot启动出错:无法访问org.springframework.boot.autoconfigure.SpringBootApplication

无法访问org.springframework.boot.autoconfigure.SpringBootApplication类文件具有错误的版本 61.0,应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。 出现该问题是由于版本不兼容, 在pom.xml文件中,修改版本为2开头即可

企业工程项目管理系统源码:Java版源码解析

一、项目概述 鸿鹄工程项目管理系统是基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技术栈,采用前后端分离架构构建的工程管理软件。它旨在应对企业快速发展中的管理挑战,提升工程管理效率,减轻工作负担,加速信息处理…

10分钟微调专属于自己的大模型_10分钟微调大模型

1.环境安装 # 设置pip全局镜像 (加速下载) pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 安装ms-swift pip install ms-swift[llm] -U# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试) pip install -r r…

Transformer教程之循环神经网络(RNN)和长短期记忆网络(LSTM)

在当今人工智能和深度学习的世界中,Transformer模型已经成为了主流。然而,回顾过去,循环神经网络(RNN)和长短期记忆网络(LSTM)在序列数据处理上也曾风靡一时。本文将详细讲解RNN和LSTM的原理、应…

【项目实训】各种反爬策略及爬虫困难点总结

在这里,我总结了本次项目的数据收集过程中遇到的反爬虫策略以及一些爬虫过程中容易出现问题的地方。 user-agent 简单的设置user-agent头部为浏览器即可: 爬取标签中带href属性的网页 对于显示岗位列表的页面,通常检查其源代码就会发现&…

Vite 动态导入警告问题解决方案

如上图我要实现从后台获取权限菜单并动态导入进行渲染 但由于 vite 暂时不支持这种导入方式 图中也给出了提示 本人也是这么去做了 但并没什么卵用 后来参考了 vite 的 import.meta.glob 这种方式 我在处理菜单权限控制的菜单里进行了如下操作: …

day001 环境的配置与工具的安装

VMware的软件包:https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载,注意不要安装到c盘,否则影响开机速度。 虚拟机工具:VMware17.5.1 1, 2, 3&#xff0c…

四川赤橙宏海商务信息咨询有限公司抖音电商领航者

在数字化浪潮席卷全球的今天,电商行业无疑是其中最为活跃、最具潜力的领域之一。而在中国这片广袤的土地上,四川赤橙宏海商务信息咨询有限公司以其独特的视角和前瞻性的战略布局,成为了抖音电商服务领域的佼佼者。今天,就让我们一…

Lesson 41 Penny‘s bag

Lesson 41 Penny’s bag 词汇 cheese n. 奶酪,芝士,起司【不可数】 搭配:a piece of cheese 一片奶酪    big cheese 大人物    cheese cake 芝士蛋糕 bread n. 面包【不可数】 各种面点:cake n. 蛋糕      cup cak…