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
相关问题
弹窗组件无法调用生命周期接口
237浏览 • 1回复 待解决
如何监听AbilitySlice生命周期
3508浏览 • 1回复 待解决
如何使用AbilityStage生命周期函数
306浏览 • 1回复 待解决
如何理解和重写onBackPress生命周期
147浏览 • 1回复 待解决
JMS 消息怎么设置生命周期呢?
918浏览 • 1回复 待解决
Ability生命周期回调函数有哪些呢?
3466浏览 • 1回复 待解决
UIAbility如何设置不可见
256浏览 • 1回复 待解决
如何更新页面列表数据
4929浏览 • 1回复 待解决
Redis数据类型列表list是什么?
1410浏览 • 1回复 待解决