堆叠布局,网格布局

堆叠布局

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠

布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆

盖前一个子元素,子元素可以叠加,也可以设置位置。

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

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

基本使用

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

对齐方式

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

名称                                 ​​​​​​​        ​​​​​​​        ​​​​​​​ 描述

TopStart                                          顶部起始端

Top                                                  顶部横向居中

TopEnd                                            顶部尾端

Start                                                 起始端纵向居中

Center                                              居中(默认)

End                                                  尾端纵向居中

BottomStart                                     底部起始端

Bottom                                             底部横向居中

BottomEnd                                       底部尾端

Z序控制

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

zIndex值大的组件会覆盖在zIndex值小的组件上方。

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

网格布局

网格布局是由分割的单元格所组成,通过指定项目所在的单元格做出各种各样的布局。网格布局 具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日 历、计算器等。

ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem 定义子组件相关特征。

基本使用

Grid组件为网格容器,其中容器内每一个条目对应一个GridItem组件,如下图所示。

Grid的子组件必须是GridItem组件。

设置排列方式

1. 设置行列数量与占比

通过设置行列数量与尺寸占比可以确定网格布局的整体排列方式。Grid 组件提供了 rowsTemplate

columnsTemplate 属性用于设置网格布局行列数量与尺寸占比。

rowsTemplate columnsTemplate 属性值是一个由多个空格和 数字 + fr 间隔拼接的字符串,fr 的个

数即网格布局的行或列数,fr 前面的数值大小,用于计算该行或列在网格布局宽度上的占比,最终决定

该行或列的宽度。

只要将 rowsTemplate 的值为 1fr 1fr 1fr ,同时将 columnsTemplate 的值为 1fr 2fr 1fr ,即可

实现上述网格布局。

注意:当 Grid 组件设置了 rowsTemplate columnsTemplate 时,Grid layoutDirection

maxCountminCountcellLength 属性不生效

2. 设置子组件所占行列数

除了大小相同的等比例网格布局,由不同大小的网格组成不均匀分布的网格布局场景在实际应用中十分

常见,如下图所示。在Grid组件中,通过设置 GridItem rowStartrowEndcolumnStart

columnEnd 可以实现如图所示的单个网格横跨多行或多列的场景。

在单个网格单元中,rowStart rowEnd 属性表示指定当前元素起始行号和终点行号,columnStart

columnEnd属性表示指定当前元素的起始列号和终点列号。

所以“0”按键横跨第一列和第二列,只要将“0”对应GridItemcolumnStartcolumnEnd设为12,将“=”

对应GridItem的的rowStartrowEnd设为56即可。

对于内容结构相似的多个GridItem,通常更推荐使用循环渲染ForEach语句中嵌套GridItem的形式,来减

少重复代码。

通过GridrowsGapcolumnsGap可以设置网格布局的行列间距。在图5所示的计算器中,行间距为

15vp,列间距为10vp

2. 设置滚动

可滚动的网格布局常用在文件管理、购物或视频列表等页面中,如下图所示。在设置Grid的行列数量与

占比时,如果仅设置行、列数量与占比中的一个,即仅设置rowsTemplate或仅设置columnsTemplate

性,网格单元按照设置的方向排列,超出Grid显示区域后,Grid拥有可滚动能力。

如果设置的是columnsTemplateGrid的滚动方向为垂直方向;如果设置的是rowsTemplateGrid的滚

动方向为水平方向。

如上图所示的横向可滚动网格布局,只要设置rowsTemplate属性的值且不设置columnsTemplate属性,

当内容超出Grid组件宽度时,Grid可横向滚动进行内容展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值