鸿蒙开发-UI-布局-层叠布局

鸿蒙开发-UI-布局

鸿蒙开发-UI-布局-线性布局

文章目录

前言

一、基本概念

二、对齐方式

三、Z序控制

四、使用场景

总结

前言

上文详细学习了线性布局,学习了线性容器内子元素在主轴以及交叉轴上的排列方式,子元素自适应相关的知识点,本文继续学习层叠布局。

一、基本概念

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局,层叠布局通过Stack容器组件实现位置的固定定位与层叠。

Stack组件为容器组件,容器内可包含各种子组件。其中子组件默认进行居中堆叠。子元素被约束在Stack下,进行自己的样式定义以及排列

Column(){
  Stack() {
    Column(){}.width('90%').height('100%').backgroundColor('#ff58b87c')
    Text('text').width('60%').height('60%').backgroundColor('#ffc3f6aa')
    Button('button').width('30%').height('30%').backgroundColor('#ff8ff3eb').fontColor('#000')
  }.width('100%').height(150).margin({ top: 50 })
}

Stack容器中定义三个子组件Column、Text、Button,子组件默认是居中堆叠,兄弟组件堆叠次序默认根据组件定义顺序,后面定义组件堆叠在前面定义的组件上。如果要控制兄弟组件堆叠次序可以通过Z序控制。

二、对齐方式

Stack组件通过alignContent参数实现位置的相对移动,支持九种对齐方式

三、Z序控制

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

堆叠实例1:

Stack({ alignContent: Alignment.BottomStart }) {
  Column() {
    Text('Stack子元素1').textAlign(TextAlign.End).fontSize(20)
  }.width(100).height(100).backgroundColor(0xffd306)

  Column() {
    Text('Stack子元素2').fontSize(20)
  }.width(150).height(150).backgroundColor(Color.Pink)

  Column() {
    Text('Stack子元素3').fontSize(20)
  }.width(200).height(200).backgroundColor(Color.Grey)
}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)

 Alignment.BottomStart 设置对齐方式左下,Text('Stack子元素3')子元素位置最后,根据默认堆叠次序规则,会覆盖前面定义的兄弟组件,其定义的width(200).height(200),大于兄弟组件,所以呈现出来下图效果,其前面定义的兄弟组件完全被覆盖

堆叠实例2:

Stack({ alignContent: Alignment.BottomStart }) {
  Column() {
    Text('Stack子元素1').fontSize(20)
  }.width(100).height(100).backgroundColor(0xffd306).zIndex(2)

  Column() {
    Text('Stack子元素2').fontSize(20)
  }.width(150).height(150).backgroundColor(Color.Pink).zIndex(1)

  Column() {
    Text('Stack子元素3').fontSize(20)
  }.width(200).height(200).backgroundColor(Color.Grey)
}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)

 Alignment.BottomStart 设置对齐方式左下,通过zIndex控制兄弟组件层叠顺序,zIndex默认0,设置越大显示层级越高,Text('Stack子元素1') > Text('Stack子元素2') > Text('Stack子元素3')。显示顺序,Text('Stack子元素3')在最下,Text('Stack子元素1')在最上。

四、使用场景

使用层叠布局快速搭建手机页面显示模型

@Entry
@Component
struct StackTest {
  private arr: string[] = ['APP1', 'APP2', 'APP3', 'APP4', 'APP5', 'APP6', 'APP7', 'APP8'];

  build() {
    Stack({ alignContent: Alignment.Bottom }) {
      Flex({ wrap: FlexWrap.Wrap }) {
        ForEach(this.arr, (item) => {
          Text(item)
            .width(100)
            .height(100)
            .fontSize(16)
            .margin(10)
            .textAlign(TextAlign.Center)
            .borderRadius(10)
            .backgroundColor(0xFFFFFF)
        }, item => item)
      }.width('100%').height('100%')

      Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center })  {
        Text('联系人').fontSize(16)
        Text('设置').fontSize(16)
        Text('短信').fontSize(16)
      }
      .width('50%')
      .height(50)
      .backgroundColor('#16302e2e')
      .margin({ bottom: 15 })
      .borderRadius(15)
    }.width('100%').height('100%').backgroundColor('#CFD0CF')
  }
}


总结

本文详细学习常见布局方式-层叠布局,学习如何控制层叠布局中子元素的堆叠顺序,后面继续学习弹性布局。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强化学习(二)多臂老虎机 “Multi-armed Bandits”——2

1、增量算法估计动作价值 由之前的内容可知,某一个动作被选择 n − 1 n-1 n−1 次后,该动作的价值估计值为 Q n ≐ R 1 R 2 ⋯ R n − 1 n − 1 Q_n\doteq\dfrac{R_1R_2\cdotsR_{n-1}}{n-1} Qn​≐n−1R1​R2​⋯Rn−1​​ 很明显,随着…

小规模团队更适合什么样的客户管理系统?

小规模团队更适合什么样的客户管理系统? 一般情况下,小规模对客户管理系统的需求通常有以下特点: 团队规模:小规模,不超过10人——尽可能降低使用成本使用人员:销售人员使用——无代码基础,最…

学习JavaEE的日子 day12 构造方法 类的制作

Day12 需求:创建人类的对象,并操作对象 分析: 人类 - Person 属性:name、sex、age 方法:eat、sleep 场景:创建多个对象,去操作对象 //测试类:该类中有main方法,测试我们写…

Mybatis配置动态数据源以及参数传递等

Mybatis必知必会 一、Mybatis动态加载数据源 在配置数据源连接时,在企业的真实开发中数据源一般都会写在配置文件中,而不会直接写在mybatis的核心配置文件中 所以,Mybatis为了方便开发人员去动态的获取数据源连接制定了一些特定的标签用于加载这些数据源。 具体做法…

【leetcode刷题】模拟专题

模拟 一、替换所有的问号1、题目链接2、解析3、代码 二、提莫攻击1、题目链接2、解析3、代码 三、Z字形变换1、题目链接2、解析3、代码 四、外观数列1、题目链接2、解析3、代码 五、数青蛙1、题目链接2、解析3、代码 一、替换所有的问号 1、题目链接 leetcode链接 2、解析 3、…

2024年人才缺口大,学网络安全找不到工作?原因竟然在这!

为什么网络安全人才缺口那么大,但很多人还是找不到工作?其实大家都忽略了1个重点,那就是不清楚企业在招什么样的人。 我花了2天的时间统计了主流招聘网站的岗位信息,发现了一个惊人的真相,那就是企业都喜欢招这3种人&…

深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 TF2基础常用函数 1、张量处理类 强制数据类型转换: a1 tf.constant([1,2,3], dtypetf.floa…

Android APP开发集成微信登陆流程(手把手新手版)

本文比较适合新手玩家,老玩家就不要看了 昨天整了下微信登陆,乍一看官方文档还有点难懂!遂自己整理了下流程,给大家参考参考。 官方文档链接:准备工作 | 微信开放文档微信开发者平台文档https://developers.weixin.q…

智能代码:生成式 AI 在软件开发中的革命性角色

想象一下,在智能手机革命性地改变了我们的生活之后,现在轮到了生成式 AI 在软件开发领域掀起风暴。你知道吗,如果代码能自己编写自己,这将是多么惊人的一步?这就好比我们现在能轻松地用手机应用管理日常生活一样&#…

AI大模型预先学习笔记三:使用Assistants API快速搭建领域专属AI助手

文章目录 一、什么是AssistantsAPI二、为什么用AssistantsAPI三、Demo展示及能力介绍四、Demo框架及具体实现五、从Demo到实际应用的Gap 一、什么是AssistantsAPI 介绍 OpenAI的第一手发布者API文档,也就是相当于GPT的API 二、为什么用AssistantsAPI 优点 够全、…

vue 渲染数组,拖拽排序,渲染同一个数组拖拽排序不影响其他选中行状态

当我们能够设置单行状态改变的时候,那么肯定可以拿到选中的当前行的id或者下标index。 只要设定一个初始化值在拖拽开始的时候重新赋值,然后再处理选中状态的时候进行判断即可。 前期写的时候没有注意到这个问题,可以看这个文章。 在复测的时…

解析HTTP响应的JSON数据

解析HTTP响应的JSON数据是许多Web开发任务中的常见需求。在Go语言中,可以使用标准库中的encoding/json包来轻松解析JSON数据。下面我将详细介绍如何解析HTTP响应的JSON数据。 首先,确保你已经发送了一个HTTP请求并获取到了响应。然后,你可以…

变电站综合自动化监控系统在某物流园35kV变电站中应用

摘 要:Acrel-1000变电站综合自动化系统,是我司根据电力系统自动化及无人值守的要求,总结国内外的研究和生产的先进经验,专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能,可实现无人…

博途PLC增量式PID和脉冲轴组合控制阀门开度(算法介绍)

这篇博客我们以S7-1200PLC平台来举例,介绍我们的PID闭环控制器如何控制脉冲轴实现阀门角度控制。SMART PLC PID控制器控制伺服驱动器实现关节角度控制详细内容请参考下面文章: https://rxxw-control.blog.csdn.net/article/details/129658364https://rxxw-control.blog.csdn…

HNU-计算机网络-实验5(自选)-安全相关编程实验

计算机网络 课程综合实验安全相关编程实验(RUST) 计科210X 甘晴void 202108010XXX 【前言】 这个《课程综合实验》是21级开始新加的实验,之前都没有。具体的可以看实验指导书,是用的19级同学的毕设。我完成的这个实验需要一点点R…

新手小白如何正确做抖音小店无货源?这六个步骤,新手建议收藏!

大家好,我是电商花花。 新手想要做好抖音小店,就要有一个正确的做店方法,很多新手小白在做店的时候踩坑,或者做是不起来,然后开通后没啥订单销量。 下面我就把正确的抖音小店做店方法详细的流程分享出来,…

UniApp+Vue智慧工地信息化管理云平台源码(支持多工地使用)

智慧工地建设的意义 1、提高工程效率 智慧工地可以通过数字化手段,将工地的各个方面进行数字化存储和管理,从而实现的实时监测和共享。这可以大大提高工程的效率,减少工程中的人工干预,并且可以为后续的工程维护和升级提供便利。…

1月16日代码随想录最大二叉树

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构…

【分布式技术】监控平台zabbix对接grafana,优化dashboard

目录 第一步:在zabbix server服务端安装grafana,并启动 第二步: 访问http://ip:3000/login 第三步:创建数据源 第四步:导入dashboard模板 ps:自定义创建新面板 第一步:在zabbix server服务…

【Rust】get_local_info 0.2.4发布

发布0.2.4,修正0.2.3([我的Rust库更新]get_local_info 0.2.3-CSDN博客)中存在的峰值算法bug,现已提交力扣并通过,耗时0ms