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

2 回复

在HarmonyOS鸿蒙Next中,Stack布局是一种常用的UI组件布局方式,它允许子组件按照堆叠的顺序进行排列。Stack布局的特点是子组件可以重叠在一起,并且可以通过设置z-index属性来控制子组件的显示层级。

Stack布局的主要属性包括:

  1. alignment:用于设置子组件的对齐方式,默认值为Alignment.TopStart,即子组件从左上角开始对齐。可以通过设置不同的对齐方式(如Alignment.CenterAlignment.BottomEnd等)来调整子组件在Stack中的位置。

  2. fit:用于设置子组件的填充方式,默认值为StackFit.Loose,即子组件按照自身大小进行布局。可以通过设置为StackFit.Expand来使子组件填充整个Stack布局。

  3. overflow:用于设置子组件超出Stack布局时的处理方式,默认值为Overflow.Visible,即子组件超出部分仍然可见。可以通过设置为Overflow.Clip来裁剪超出Stack布局的部分。

Stack布局中,子组件的排列顺序由它们在Stack中的添加顺序决定,后添加的子组件会覆盖先添加的子组件。如果需要调整子组件的显示顺序,可以通过设置z-index属性来实现,z-index值越大的子组件会显示在越上层。

Stack布局的典型应用场景包括实现重叠的UI元素、创建复杂的界面布局等。通过合理使用Stack布局,可以灵活地控制UI组件的显示顺序和位置,从而实现丰富的用户界面效果。

总结来说,Stack布局是HarmonyOS鸿蒙Next中用于实现子组件堆叠排列的布局方式,通过设置alignmentfitoverflow等属性,可以灵活控制子组件的位置、填充方式和溢出处理。子组件的显示顺序可以通过z-index属性进行调整,适用于需要重叠排列的UI场景。

更多关于HarmonyOS鸿蒙Next基础(五) - 深究UI组件之布局Stack的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Stack布局是一种常用的UI组件布局方式。Stack允许子组件在垂直方向上堆叠排列,类似于Android中的LinearLayout(垂直方向)。通过Stack,开发者可以轻松实现多个组件的叠加显示,适用于需要将多个元素按层次排列的场景。Stack布局支持通过align属性调整子组件的对齐方式,如居中、靠左等,从而灵活控制组件的布局效果。

回到顶部