HarmonyOS鸿蒙Next基础(五) - 深究UI组件之布局Stack
HarmonyOS鸿蒙Next基础(五) - 深究UI组件之布局Stack
概述:
层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。
层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。
![图例]
接口
Stack(value?: { alignContent?: Alignment })
| 参数名 | 参数类型 | 必填 | 参数描述 |
|---|---|---|---|
| alignContent | Alignment | 否 | 设置子组件在容器内的对齐方式。 默认值:Alignment.Center |
开发布局
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 })
}
![图例]
属性
除了alignContent, 还支持通用属性
对齐方式
Stack组件通过alignContent参数实现位置的相对移动。支持九种对齐方式,参考下图:
![对齐方式]
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)
![Z序控制]
修改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)
![修改zIndex后的展示]
更多关于HarmonyOS鸿蒙Next基础(五) - 深究UI组件之布局Stack的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Stack布局是一种常用的UI组件布局方式,它允许子组件按照堆叠的顺序进行排列。Stack布局的特点是子组件可以重叠在一起,并且可以通过设置z-index属性来控制子组件的显示层级。
Stack布局的主要属性包括:
-
alignment:用于设置子组件的对齐方式,默认值为Alignment.TopStart,即子组件从左上角开始对齐。可以通过设置不同的对齐方式(如Alignment.Center、Alignment.BottomEnd等)来调整子组件在Stack中的位置。 -
fit:用于设置子组件的填充方式,默认值为StackFit.Loose,即子组件按照自身大小进行布局。可以通过设置为StackFit.Expand来使子组件填充整个Stack布局。 -
overflow:用于设置子组件超出Stack布局时的处理方式,默认值为Overflow.Visible,即子组件超出部分仍然可见。可以通过设置为Overflow.Clip来裁剪超出Stack布局的部分。
在Stack布局中,子组件的排列顺序由它们在Stack中的添加顺序决定,后添加的子组件会覆盖先添加的子组件。如果需要调整子组件的显示顺序,可以通过设置z-index属性来实现,z-index值越大的子组件会显示在越上层。
Stack布局的典型应用场景包括实现重叠的UI元素、创建复杂的界面布局等。通过合理使用Stack布局,可以灵活地控制UI组件的显示顺序和位置,从而实现丰富的用户界面效果。
总结来说,Stack布局是HarmonyOS鸿蒙Next中用于实现子组件堆叠排列的布局方式,通过设置alignment、fit、overflow等属性,可以灵活控制子组件的位置、填充方式和溢出处理。子组件的显示顺序可以通过z-index属性进行调整,适用于需要重叠排列的UI场景。
更多关于HarmonyOS鸿蒙Next基础(五) - 深究UI组件之布局Stack的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


