#鸿蒙通关秘籍#如何为自定义组件实现自定义布局?

HarmonyOS
19h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
网络小战士

为自定义组件实现自定义布局可以使用onMeasureSizeonPlaceChildren方法。onMeasureSize用于测量子组件的尺寸,onPlaceChildren用于放置子组件。代码示例如下:

@Component
struct CustomLayout {
  @State startSize: number = 100;
  result: SizeResult = { width: 0, height: 0 };

  onMeasureSize(selfLayoutInfo: GeometryInfo, children: Array<Measurable>, constraint: ConstraintSizeOptions) {
    let size = 100;
    children.forEach((child) => {
      let result: MeasureResult = child.measure({ minHeight: size, minWidth: size, maxWidth: size, maxHeight: size });
      size += result.width / 2;
    });
    this.result.width = 100;
    this.result.height = 400;
    return this.result;
  }

  onPlaceChildren(selfLayoutInfo: GeometryInfo, children: Array<Layoutable>, constraint: ConstraintSizeOptions) {
    let startPos = 300;
    children.forEach((child) => {
      let pos = startPos - child.measureResult.height;
      child.layout({ x: pos, y: pos });
    });
  }

  build() {
    // 构建布局
  }
}

分享
微博
QQ
微信
回复
17h前
相关问题
鸿蒙怎么实现自定义布局的Dialog
9139浏览 • 2回复 已解决
自定义弹窗自定义转场动画
1064浏览 • 1回复 待解决
HarmonyOS如何实现自定义布局内置手势
370浏览 • 0回复 待解决
如何自定义popup弹窗的布局
392浏览 • 2回复 待解决
HarmonyOS自定义组件增加方法如何实现
348浏览 • 1回复 待解决
HarmonyOS CoverFlow效果自定义组件实现
191浏览 • 1回复 待解决
ArkTs如何自定义容器组件
3041浏览 • 1回复 待解决