Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局Stack

Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局

导读

在Android中我个人认为,最离不开的就是LinearLayout和FrameLayout了,RelativeLayout我都基本不用的。

所以我把层叠布局排在了第二位。

官方描述

如何定义层叠布局

Stack组件为容器组件,容器内可包含各种子组件。其中子组件默认进行居中堆叠。

javascript 复制代码
  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的第一个子组件宽度是90,默认是居中的(和Android有区别,写完一定要跑,不要太自信

text在Column 的上层,遮挡了部分Column

buttom在text的上层,遮挡了部分text。

控制Stack内的子控件对齐方式

alignSelf

上篇文章我们学到了子控件可以通过
alignSelf(ItemAlign.End)

来单独设定子View的对齐方式,我们继续尝试下。

这里选项有限,大概是不支持的,看看alignSelf的描述

好了,确定alignSelf仅仅适用于线性布局(Column&Row)

继续往下走,如果说不支持单独设置Stack组件中子控件的对齐方式那显然是不可能的。

alignContent参数

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

很清晰,Top|Bottom +Start|Bottom,缺少时居中。

调用方式在文档上是这么写的

好奇能不能.出来呢? 答案是可以的

问题又来了,既然两种方式都可以,那么如果两种方式设置的不一致哪个优先级更高呢?

继续试试

两种方式设置的不一致,还是调用方法设置的优先级更高

那么如何给子控件设置自己独有的居中方式呢?

答案是我没找着,也参考了其他同学的帖子,也都未提到。

有知道的同学可以留言告诉我一下,也造福其他看到我这篇帖子的同学,感谢啦。

层叠次序

在Android中也是可以静态声明,或者动态调整子View的次序的,可能有很多同学都没用过。

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

看个效果

text完全遮挡了botton

那么你好奇吗?这个zindex默认是多少呢?可以是负数吗?小数可以不?

先来看这个,

字段定义是number,这个的number包含小数,所以可以写,但没有用。

负数可以,

那么这个zIndex默认是多少呢

我修改了Column的颜色透明度,使结果显而易见。

结束

总结下Android有的基本都有,默认对齐是居中,暂未找到子控件单独控制自己对其方式的字段或方法。

可以通过zindex打破默认的堆叠次序,支持负数,小数取整。

相关推荐
前端不太难1 小时前
HarmonyOS PC 如何应对多输入交互?
状态模式·交互·harmonyos
2501_944448002 小时前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
2601_949593658 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9229 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233229 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882111 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
2601_9498333911 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
xiaoqi92213 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
听麟13 小时前
HarmonyOS 6.0+ 智慧出行导航APP开发实战:离线地图与多设备位置协同落地
华为·wpf·harmonyos
qq_1777673713 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos