首页 > 其他分享 >鸿蒙界面开发(三):层叠布局&绝对定位

鸿蒙界面开发(三):层叠布局&绝对定位

时间:2024-08-27 09:54:46浏览次数:18  
标签:10 界面 鸿蒙 100% height width 组件 层叠

层叠布局——Stack容器组件

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。

层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。
在这里插入图片描述层叠布局优先使用层叠布局Stack组件。

如图1,Stack作为容器,容器内的子元素的顺序为Item1->Item2->Item3。

图1 层叠布局

在这里插入图片描述

开发布局

Stack组件为容器组件,子元素默认进行居中堆叠。

对齐方式——alignContent参数

Stack组件通过alignContent参数实现位置的相对移动。

 build() {
 //Alignment枚举类型
    Stack({ alignContent: Alignment.TopStart }) {
      Text('Stack').width('90%').height('100%').backgroundColor('#e1dede').align(Alignment.BottomEnd)
      Text('Item 1').width('70%').height('80%').backgroundColor(0xd2cab3).align(Alignment.BottomEnd)
      Text('Item 2').width('50%').height('60%').backgroundColor(0xc1cbac).align(Alignment.BottomEnd)
    }.width('100%').height(150).margin({ top: 5 })
  }

TopStart	顶部起始端。
Top	顶部横向居中。
TopEnd	顶部尾端。
Start	起始端纵向居中。
Center	横向和纵向居中。
End	尾端纵向居中。
BottomStart	底部起始端。
Bottom	底部横向居中。
BottomEnd	底部尾端。

层叠布局案例

在这里插入图片描述

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  //层叠布局
  build() {
    Column(){
      Column(){
        //层叠布局默认居中显示,利用alignContent参数进行调整
        Stack({alignContent:Alignment.Bottom}){
          Image($r('app.media.bz_img'))
            .width('100%')
            .height('100%')
            .borderRadius({ topLeft:10,topRight:10 })
          Row(){
            Row({space:5}){
              Image($r('app.media.bz_play'))
                .fillColor(Color.White)
                .width(14)
              Text('288万')
                .fontColor(Color.White)
                .fontSize(14)
            }.margin({right:10})
            Row({space:5}){
              Image($r('app.media.bz_msg'))
                .fillColor(Color.White)
                .width(14)
              Text('8655')
                .fontColor(Color.White)
                .fontSize(14)
            }

            Text('4:33')
              .fontColor(Color.White)
              .fontSize(14)
              .margin({right:10})
          }.height(24)
          .width('100%')

        }
        .width('100%')
        .height(125)
        Column({space:5}){
          Text('【凤凰传奇新歌】欢迎来到国风统治区:唢呐一响神曲《铁衣流派推广曲》')
            .textOverflow({overflow:TextOverflow.Ellipsis})
            .maxLines(2)
            .fontSize(13)
            .lineHeight(16)
          // .fontWeight(700)
          Row(){
            Text('19万点赞')
              .fontColor('#eaa28a')
              .backgroundColor('#fef0ef')
              .fontSize(10)
              .padding(5)
            Image($r('app.media.bz_more'))
              .fillColor('#666')
              .width(14)
          }.width('100%')
          .margin({top:6})
          // .height(50)
          .justifyContent(FlexAlign.SpaceBetween)
        }

      }.width(200)
      .height(200)
      .borderRadius(10)
      .margin({top:10})
      .backgroundColor(Color.White)
    }.width('100%')
    .height('100%')
    .backgroundColor('#ccc')
  }
}

绝对定位——position属性

相对于父组件进行位移。添加position属性时,默认x,y为0。一旦添加position属性,组件不再占用原来位置。
在这里插入图片描述使用position属性,可能出现层叠遮盖的效果,写在后面的组件会遮盖写在前面的兄弟组件。可以利用zIndex调整兄弟之间的层级关系。

Z序控制——zIndex属性

调整层级关系。
Stack容器中兄弟组件显示层级关系可以通过Z序控制的zIndex属性改变。
zIndex值越大,显示层级越高,即zIndex值大的组件会覆盖在zIndex值小的组件上方组件上移/下移
在层叠布局中,如果后面子元素尺寸大于前面子元素尺寸,则前面子元素完全隐藏。这时可以用zIndex调整组件的上下顺序。zIndex大的在上面。

绝对定位场景示例

在这里插入图片描述

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  //绝对定位
  build() {
    Column(){
      Column(){
        Text('VIP')
          .width(40)
          .height(20)
          .borderRadius({topLeft:10,bottomRight:10})
          .border({width:2, color:'#feb7a3'})
          .backgroundColor('#e49642')
          .fontStyle(FontStyle.Italic)
          .fontSize(14)
          .fontColor('#feb7a3')
          .fontWeight(700)
          .textAlign(TextAlign.Center)//文本居中
          .position({x:0,y:0})//绝对定位
          .zIndex(666)
        Image($r('app.media.position_moco'))
          .height(210)
          .width('100%')
          .borderRadius(10)
        Row(){
          Image($r('app.media.position_earphone'))
            .width(20)
            .height(20)
            .borderRadius(10)
            .backgroundColor('#55b7f4')
            .padding(5)//挤压svg元素
            .fillColor(Color.White)
            .margin({left:5, right:5})
          Text('飞狗MOCO')
            .fontWeight(700)
            .margin({left:5})
        }.height(30)
        .width('100%')
      }.width(160)
      .height(240)
      .backgroundColor(Color.White)
    }.width('100%')
    .height('100%')
    .backgroundColor(Color.Pink)

  }
}

标签:10,界面,鸿蒙,100%,height,width,组件,层叠
From: https://blog.csdn.net/littleyy666/article/details/141432171

相关文章

  • tortoisegit(了解git图形界面)/ssh/git分支/版本
    下载–TortoiseGit–Git的WindowsShell接口https://tortoisegit.org/download/安装:一路下一步安装即可(有下载语言包一样安装)操作了解1.克隆远程仓库2.上传到远程仓库结果查看3.tortoisegit(初始化)和初始化建立远程连接1.创建文件夹2.成功后会多一个(.git文件......
  • 鸿蒙OS试题
    25.为了使isShow参数值与半模态界面的状态同步,可以使用下列那种方式双向绑定参数?D.Column(){Button("transitionmodal1").onClick(()=>{this.isShow=true}).fontSize(20).margin(10).bindSheet($$this.isShow,this.myBuilder(),{height:this.sheetHeight,......
  • 鸿蒙OS应用开发试题
    1.作依次调用如下方法4次启动U为应用开发者,你使用hiAppEvent订阅了崩溃事件。应用崩溃后,从onReceive接口返回的AppEventInfo中()属性可以获取崩溃调用信息。A.eventTypeB.nameC.domainD.Params2.某个应用开发了一个UIAbilityA,其启动模式是specified,并且对应的AbilityS......
  • 鸿蒙OS高级应用开发试题
    66.为了加快构建速度,提高开发效率,可以如何调整hvigor配置,从而优化构建速度A.启用hvigor的incremental,在增量场景下检查任务是否可以跳过B.启动hvigor的daemon模式,在增量场景下复用缓存C.启用hvigor的parallel,在增量场景下进行并行编译处理D.启用hvigor的typeCheck,在增量场......
  • 鸿蒙DevEco Studio 快捷键
    window版快捷键 相关说明Ctrl+Q 查看API说明⽂档(官方神器)Ctrl+F 查找Ctrl+shift+F 全局查找Ctrl+R 替换Ctrl+shift+R 全局替换Ctrl+Z 撤销Ctrl+D 当前行+1Ctrl+Y 删除当行Ctrl+Enter 光标后面换行Ctrl+G 跳转至某一行Ctrl+Alt+L 格式化Ctrl+N 快速打......
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用DFX能力介绍(含闯关习题)
    学完时间:2024年8月24日学完排名:第1698名一、PerformanceAnalysisKit简介PerformanceAnalysisKit(性能分析服务)为开发者提供应用事件、日志、跟踪分析工具,可观测应用运行时状态,用于行为分析、故障分析、安全分析、统计分析,帮助开发者持续改进应用体验。使用场景应用......
  • 华为万兆猫HN8145X6使能+补全AllShell+修改SN+E改XG+切换华为界面
    第〇部分准备工作1、查询老光猫上的LOID(电信、联通)、Password(移动)。1.1用光猫默认账号密码(详见光猫底部铭牌)访问光猫;状态-状态总览:宽带识别码(LOID):网络-远程管理-宽带识别码(LOID)认证-宽带识别码(LOID):2、记录老光猫的互联网、IPTV的默认配置数据,截图存档(建议项,一般......
  • 基于yolov10的电梯电瓶车、电动车检测系统,支持图像检测,也支持视频和摄像实时检测(pytor
       更多目标检测和图像分类识别项目可看我主页其他文章功能演示:基于yolov10的电梯电瓶车,电动车检测,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili(一)简介基于yolov10的电梯电瓶车、电动车检测系统是在pytorch框架下实现的,这是一个完整的项目,包......
  • 用FinalShell远程登录VMware的Linux操作系统登陆不上,反复弹出要求输入密码的界面
    问题描述:用FinalShell远程登录VMware的Linux操作系统,其中IP地址输入正确,虚拟机和自己的电脑可以互相ping通,但是就是连接不上,反复弹出要求输入密码的界面:那么可能就是Linux登录账户的用户名和home目录下的用户名不一致导致的,解决办法如下:解决办法:1.去Linux操作系统中的终端......
  • el-input按回车 界面自动刷新
    el-input按回车界面自动刷新先解释一下时间冒泡事件冒泡(EventBubbling)是事件处理的一种机制,它描述了事件从最具体的元素(如一个按钮或链接)开始,然后逐级向上转播至不那么具体的节点的过程。在事件冒泡过程中,当一个事件在一个元素上触发时,该事件会首先在这个元素上触发。......