层叠布局(Stack)

目录

1、概述

2、开发布局

3、对齐方式

3.1、TopStart 

3.2、Top

3.3、TopEnd

3.4、Start

3.5、Center

3.6、End

3.7、BottomStart

3.8、Bottom

3.9、BottomEnd 

4、Z序控制

5、场景示例


1、概述

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

        层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。

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

图1 层叠布局

2、开发布局

        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 })
}

3、对齐方式

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

图2 Stack容器内元素的对齐方式

3.1、TopStart 

        顶部向左对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.TopStart }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

 

3.2、Top

        顶部居中对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.Top }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

 

3.3、TopEnd

        顶部向右对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.TopEnd }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.4、Start

        竖直居中、横向居左对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.Start }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.5、Center

        竖直居中、横向居中对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.Center }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.6、End

        竖直居中、横向居右对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.End }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.7、BottomStart

        底部向左对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.BottomStart }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.8、Bottom

        底部居中对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.Bottom }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

3.9、BottomEnd 

        底部向右对齐。

@Entry
@Component
struct StackAlignContentPage {@State message: string = 'Hello World'build() {Stack({ alignContent: Alignment.BottomEnd }) {Column() {}.width(200).height(200).backgroundColor(0x86C5E3)Column() {}.width(150).height(150).backgroundColor(0x92D6CC)Column() {}.width(100).height(100).backgroundColor(0xF5DC62)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)}
}

4、Z序控制

        Stack容器中兄弟组件显示层级关系可以通过Z序控制的zIndex属性改变。zIndex值越大,显示层级越高,即zIndex值大的组件会覆盖在zIndex值小的组件上方。

        在层叠布局中,如果后面子元素尺寸大于前面子元素尺寸,则前面子元素完全隐藏。

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)

        下图中,最后的子元素3的尺寸大于前面的所有子元素,所以,前面两个元素完全隐藏。改变子元素1,子元素2的zIndex属性后,可以将元素展示出来。

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)

5、场景示例

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

@Entry
@Component
struct StackSample {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')}
}

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

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

相关文章

记录用python封装的第一个小程序

前言 我要封装的是前段时间复现的一个视频融合拼接的程序,现在我打算将他封装成exe程序,我在这里只记录一下我封装的过程,使用的是pyinstaller,具体的封装知识我就不多说了,可以参考我另一篇博客:将Python…

HCIP-1

一、网络类型: 点到点 BMA:广播型多路访问 – 在一个MA网络中同时存在广播(洪泛)机制 NBMA:非广播型多路访问—在一个MA网络中,没有洪泛机制 MA:多路访问 在一个网段内,存在的节…

NGINX 配置本地HTTPS(免费证书)

生成秘钥key,运行: $ openssl genrsa -des3 -out server.key 2048 会有两次要求输入密码,输入同一个即可。输入密码然后你就获得了一个server.key文件。 以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令: $ op…

Open3D AABB包围盒计算与使用(19)

Open3D AABB包围盒计算与使用(19) 一、算法速览二、算法实现1.代码2.结果少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。 一、算法速览 AABB包围盒就是将点云用一个各条边沿着坐…

SpringMVC(六)RESTful

1.RESTful简介 REST:Representational State Transfer,表现层资源状态转移 (1)资源 资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件…

Untiy HTC Vive VRTK 开发记录

目录 一.概述 二.功能实现 1.模型抓取 1)基础抓取脚本 2)抓取物体在手柄上的角度 2.模型放置区域高亮并吸附 1)VRTK_SnapDropZone 2)VRTK_PolicyList 3)VRTK_SnapDropZone_UnityEvents 3.交互滑动条 4.交互旋…

什么是云安全?如何保护云资源

云计算允许组织通过互联网按需向其客户、合作伙伴或员工提供关键业务应用程序、服务和资源。换句话说,不再需要物理维护资源。每当您通过 Internet 从计算机访问文件或服务时,您都是在访问云。 迁移到云可以帮助企业增强安全性、简化运营并降低成本。企…

机器视觉在OCR字符检测的应用

在产品质量 检测过程中,对于字符、条码等标识信息的识别、读取、检测是非常重要的一部分,比如在食品饮料包装检测中,生产日期 、保质期 、生产批号 、条码等字符信息是产品管理和追溯必不可缺的,因此利用机器视觉技术进行OCR字符采…

Java设计模式-备忘录模式

备忘录模式 一、概述二、结构三、案例实现(一)“白箱”备忘录模式(二)“黑箱”备忘录模式 四、优缺点五、使用场景 一、概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤&…

redis高级篇之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程,4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

[Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量

文章目录 1、进程优先级1.1 Linux下查看进程优先级1.2 Linux 进程优先级的修改PRI and NItop命令配合操作更改优先级 1.3 竞争 独立 并行 并发 2、进程间切换3、Linux2.6内核进程调度队列3.1 活跃进程3.2 过期进程 4 main函数参数 — 命令行参数4.1 利用main函数的参数实现一个…

132基于matlab的采集信号模极大值以及李氏指数计算

基于matlab的采集信号模极大值以及李氏指数计算, 1)计算信号的小波变换。 2)求出模极大曲线。 3)计算其中两个奇异点的Lipschitz指数,程序已调通,可直接运行。 132matlab模极大曲线Lipschitz (xiaohongshu.com)

Linux驱动学习—输入子系统

1、什么是输入子系统? 输入子系统是Linux专门做的一套框架来处理输入事件的,像鼠标,键盘,触摸屏这些都是输入设备,但是这邪恶输入设备的类型又都不是一样的,所以为了统一这些输入设备驱动标准应运而生的。…

关于lombok插件的使用

在 idea 中有个非常好用的插件 lombok,可以用来在实体类中自动生成 get 、set以及构造方法,下面我们来学习如何使用它: 首先打开settings,按照以下方法: 到 marketplace 中搜索 lombok,我这里已经安装好了…

9.5.1 函数模板特化

函数模板 有了泛化版本比较函数&#xff0c;我们可以比较两个整数&#xff0c;两个字符&#xff0c;两个指针 6~10行&#xff0c;是一个函数模板 13~16行&#xff0c;都可以得到正常结果 22行&#xff0c;得到的结果是&#xff0c;"A001" < "A000", …

RAG(检索增强生成 )

&#x1f4d1;前言 本文主要是【RAG】——RAG(检索增强生成 )的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

springcloud sleuth分布式请求链路跟踪

简介 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最后的失败. S…

抖店只做商品卡流量能行吗?为什么我的店铺没流量?出单玩法解析

我是王路飞。 抖店开通后&#xff0c;如果只做商品卡流量&#xff0c;可行吗&#xff1f; 有的新手商家就是不想给达人分佣金&#xff0c;就一直坚持做商品卡流量&#xff0c;但店铺却一直没什么流量&#xff0c;自然也就没出单了。 自然流量也是可以出单的&#xff0c;只能…

【MySQL】本地创建MySQL数据库详解

文章目录 下载MySQL安装重置密码本地连接 下载MySQL 下载网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 安装 将下载好的压缩包解压到D盘。 在解压好的文件夹中创建my.ini文件。 将以下代码复制粘贴到创建好的my.ini文件中。注意修改文件路径。 [mysqld] #设置…

【SQL注入】SQLMAP v1.7.11.1 汉化版

下载链接 【SQL注入】SQLMAP v1.7.11.1 汉化版 简介 SQLMAP是一款开源的自动化SQL注入工具&#xff0c;用于扫描和利用Web应用程序中的SQL注入漏洞。它在安全测试领域被广泛应用&#xff0c;可用于检测和利用SQL注入漏洞&#xff0c;以验证应用程序的安全性。 SQL注入是一种…