List组件的页面复写了onMeasure/onLayout生命周期,数据列表不可见

List组件的页面复写了onMeasure/onLayout生命周期,数据列表不可见复现demo:

@Entry 
@Component 
struct MainPage { 
  public arr: Array<string> = ['1', '2', '3'] 
 
  build() { 
    Row() { 
      Column() { 
        Stack() { 
          List({ space: 40 }) { 
            ForEach( 
              this.arr, 
              (item: string, index) => { 
                ListItem() { 
                  Text(item).width('100%').height(150).textAlign(TextAlign.Center).onClick(() => { 
                    console.log('点击') 
                  }) 
                }.margin(20).backgroundColor(Color.White) 
              }) 
          } 
        }.width('100%').height('100%').backgroundColor(Color.Gray) 
 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
 
  onMeasure(children: Array<LayoutChild>, constraint: ConstraintSizeOptions): void { 
    console.log('cwq onMeasure') 
  } 
 
  onLayout(children: Array<LayoutChild>, constraint: ConstraintSizeOptions): void { 
    console.log('cwq onLayout') 
  } 
}
HarmonyOS
2024-02-20 10:34:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
blue76

调用onMeasure和onLayout相当于自己给组件设置大小和布局,不设置的话就不会渲染。

示例代码

onLayout(children: Array<LayoutChild>, constraint: ConstraintSizeOptions) { 
  let pos = 0; 
  children.forEach((child) => { 
    child.layout({ position: { x: pos, y: pos }, constraint: constraint }) 
    pos += 100; 
  }) 
}
分享
微博
QQ
微信
回复
2024-02-20 19:48:06
相关问题
弹窗组件无法调用生命周期接口
923浏览 • 1回复 待解决
AbilityStage组件容器生命周期和回调
100浏览 • 1回复 待解决
监听Ability生命周期
560浏览 • 1回复 待解决
swiper切换监听生命周期
538浏览 • 1回复 待解决
应用内生命周期流转
37浏览 • 1回复 待解决
如何监听AbilitySlice生命周期
4150浏览 • 1回复 待解决
如何使用AbilityStage生命周期函数
1048浏览 • 1回复 待解决
JMS 消息怎么设置生命周期呢?
1721浏览 • 1回复 待解决
如何理解和重写onBackPress生命周期
1032浏览 • 1回复 待解决
公共事件生命周期是怎样
668浏览 • 1回复 待解决
Ability生命周期回调函数有哪些呢?
4369浏览 • 1回复 待解决