HarmonyOS鸿蒙Next中Stack布局如何修改部分子视图的对齐方式

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS鸿蒙Next中Stack布局如何修改部分子视图的对齐方式 您好,下面的示例代码中两个Row布局都是在右上角(因为设置了Alignment.TopEnd ),请问如何将第二个Row布局调整到Stack布局的中心?

目前我想到两个方式,一个是使用position进行绝对定位,但是感觉比较麻烦。另一个是给第二个Row外面再包一层和Stack一样大小的布局,然后指定中心对齐,但是这种方式会导致点击事件会被新增的这层布局拦下来。请问是否有其他更优的实现方式?

build() {
  Stack({ alignContent: Alignment.TopEnd }) {
    Row()
      .size({ width: '100', height: '100' })
      .backgroundColor(Color.Red)
    Row()
      .size({ width: '50', height: '50' })
      .backgroundColor(Color.Green)
  }.width('100%').height('100%')
}

更多关于HarmonyOS鸿蒙Next中Stack布局如何修改部分子视图的对齐方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

以下demo是否满足您的要求。

@Entry
@Component
struct StackPage {
  @State message: string = 'Hello World';

  build() {
    Stack({ alignContent: Alignment.TopEnd }) {
      Row()
        .size({ width: '100', height: '100' })
        .backgroundColor(Color.Red)
        .onClick(()=>{
          console.log('点击了=========================>红色')
        })
      Stack({ alignContent: Alignment.Center }){
        Row()
          .size({ width: '50', height: '50' })
          .backgroundColor(Color.Green)
          .onClick(()=>{
            console.log('点击了=========================>绿色')
          })
      }.width('100%').height('100%').hitTestBehavior(HitTestMode.Transparent)
    }.width('100%').height('100%')
  }
}

当Stack组件中有多个节点触摸区域重叠时,如两个节点,默认只会对显示在最上层的节点做触摸测试,若需要显示在下层的节点触发触摸测试,请给显示在上层的节点设置hitTestBehavior为HitTestMode.Transparent。

更多关于HarmonyOS鸿蒙Next中Stack布局如何修改部分子视图的对齐方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Stack布局默认将子视图堆叠在一起,所有子视图默认对齐到左上角。要修改部分子视图的对齐方式,可以通过设置子视图的layoutAlignment属性来实现。

layoutAlignment属性支持以下对齐方式:

  • Alignment.TopStart:左上角
  • Alignment.Top:顶部居中
  • Alignment.TopEnd:右上角
  • Alignment.Start:左侧居中
  • Alignment.Center:居中
  • Alignment.End:右侧居中
  • Alignment.BottomStart:左下角
  • Alignment.Bottom:底部居中
  • Alignment.BottomEnd:右下角

示例代码如下:

@Entry
@Component
struct StackExample {
  build() {
    Stack() {
      Text('TopStart')
        .layoutAlignment(Alignment.TopStart)
      Text('Top')
        .layoutAlignment(Alignment.Top)
      Text('TopEnd')
        .layoutAlignment(Alignment.TopEnd)
      Text('Start')
        .layoutAlignment(Alignment.Start)
      Text('Center')
        .layoutAlignment(Alignment.Center)
      Text('End')
        .layoutAlignment(Alignment.End)
      Text('BottomStart')
        .layoutAlignment(Alignment.BottomStart)
      Text('Bottom')
        .layoutAlignment(Alignment.Bottom)
      Text('BottomEnd')
        .layoutAlignment(Alignment.BottomEnd)
    }
    .width('100%')
    .height('100%')
  }
}

通过设置layoutAlignment属性,可以灵活调整Stack布局中子视图的对齐方式。

在HarmonyOS的Stack布局中,默认所有子视图都是居中对齐的。要修改部分子视图的对齐方式,可以通过设置子视图的align属性来实现。例如,使用Align组件或直接设置alignSelf属性来调整子视图的对齐方式。具体代码如下:

Stack({ alignContent: Alignment.Center }) {
  Text('Center').align(Alignment.Center)
  Text('TopLeft').align(Alignment.TopStart)
  Text('BottomRight').align(Alignment.BottomEnd)
}

通过这种方式,可以灵活调整Stack布局中不同子视图的对齐方式。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!