当前位置: 首页 > news >正文

HarmonyOS应用开发——层叠布局

        在 HarmonyOS 应用开发的世界里,界面布局如同搭建高楼大厦的框架,决定着用户与应用交互的第一印象和使用体验。合理的布局不仅能让界面元素整齐有序、美观协调,还能适应不同设备的屏幕尺寸和分辨率。本文将深入剖析 HarmonyOS 中的常见布局方式,帮助开发者打造出出色的应用界面。

前置条件

        在开始本文章内容之前,博主希望开发者已完成 HarmonyOS 开发环境 的搭建。详情请参考:HarmonyOS 开发环境搭建

 层叠布局(StackLayout)

应用场景:

  • 组件需要有堆叠效果时优先考虑此布局。层叠布局的堆叠效果不会占用或影响其他同容器内子组件的布局空间。

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

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

let MTop:Record<string,number> = { 'top': 50 }@Entry
@Component
struct StackExample {build() {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(MTop)}}
}

 对齐方式

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

@Entry
@Component
struct StackExample {build() {// TopStart | Top | TopEnd | Start | Center | End | BottomStart | Bottom | BottomEndStack({ 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 })}
}

Z序控制

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

@Entry
@Component
struct StackExample {build() {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)}.width(350).height(350).backgroundColor(0xe0e0e0)}
}

 

相关文章:

  • 2025高考志愿填报核心策略
  • 使用SRv6访问5G网络中的边缘应用
  • 【原创】【3】【辅助工具】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • DAY33神经网络
  • /var/lib/docker/overlay2目录过大怎么办
  • c++IO类
  • Frida Hook Android App 点击事件实战指南:从进程识别到成功注入
  • 程序包androidx.fragment.app不存在 import androidx.fragment.app
  • STM32连接阿里云物联网平台
  • 【51单片机2个外部中断控制流水方向与引脚电平】2022-5-4
  • 基于PostgreSQL的百度或高德等POI多层级分类的数据库设计
  • 云原生 CAD 让制造业设计协同更便捷
  • Docker快速部署可视化防火墙工具:使用go语言开发,底层是iptables,提供API调用
  • 动手用 Web 实现一个 2048 游戏
  • 基于分布式部分可观测马尔可夫决策过程与联邦强化学习的低空经济智能协同决策框架
  • 【MySQL基础】MySQL复合查询全面解析:从基础到高级应用
  • 前端依赖升级完全指南:npm、pnpm、yarn 实践总结
  • python系列教程245——为什么需要继承
  • Linux——7.如何理解 shell
  • C#图书管理系统笔记(残缺版)
  • 利用淘宝联盟做网站/关键词搜索排名工具
  • 做网站一定要云解析吗/链友之家
  • 做网站销售好吗/seo网络营销外包公司
  • 深圳市宝安区龙华公司是干什么的/seo推广思路
  • 山西怀仁建设银行/南宁seo优化公司
  • 做二手电脑的网站/网站应该如何推广