HarmonyOS 鸿蒙Next:List 包裹Image时,对Image设置.constraintSize({maxHeight: 200})为何效果等同于width('200')

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

HarmonyOS 鸿蒙Next:List 包裹Image时,对Image设置.constraintSize({maxHeight: 200})为何效果等同于width(‘200’)

@Builder itemBuilder(moment: MomentData, index: number) { if (moment.getPhoto() != null && moment.getPhoto().length > 0) { Image(moment.getPhoto()) .width(‘100%’) .constraintSize({maxHeight: 200}) .borderRadius(12) .geometryTransition(‘geometryTransition’ + moment.getPhoto()) .sharedTransition(‘sharedImage1’ + moment.getPhoto(), {duration: 300}) .onClick(() => { let param: WebPageConfig = { title: “detail_” + index, icon: moment.getPhoto(), index: 1, content: moment.getContent() } router.pushUrl({ url: ‘pages/Moment/MomentDetail’, params: param }, router.RouterMode.Single, (err) => { if (err) { console.error(Invoke pushUrl failed, code is ${err.code}, message is ${err.message}); return; } console.info(‘Invoke pushUrl succeeded.’); }); }); } else { Text(‘No icon’) .fontSize(25) } }

build() { List() { ForEach(this.dataList, (moment: MomentData, index: number) => { ListItem(){ this.itemBuilder(plainToInstance(MomentData, moment), index) } }) } .divider({ strokeWidth: 12,}) .width(‘100%’) .height(‘100%’) .padding({top: 12, left: 12, right: 12}) }


预期是最大高度200, 结果出来所有图片高度都是200

更多关于HarmonyOS 鸿蒙Next:List 包裹Image时,对Image设置.constraintSize({maxHeight: 200})为何效果等同于width('200')的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
maxHeight就是最大高度,设置之后组件的高度不会超过设置的数值。你的图片自身高度都大于200的情况下,设置maxHeight200相当于设置height200。

minHeight就是最小高度,设置之后组件的高度不会小于设置的数值。

你想要实现什么样的效果呢?

更多关于HarmonyOS 鸿蒙Next:List 包裹Image时,对Image设置.constraintSize({maxHeight: 200})为何效果等同于width('200')的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我的图片最后的高度有大于200也有小于200 的,

小于200的展示也是高度200吗?你可以不设置constraintSize看下图片的真实高度是多少。

如图所示,我在双列流 WaterFlow 和单列流 List 都是一样,只要设置了maxHeight,全部图片就定死高度了,而设置minHeight则是预期效果,不知道为啥

在HarmonyOS鸿蒙Next中,当你使用List组件包裹Image组件并尝试对Image设置.constraintSize({maxHeight: 200})时,如果发现效果等同于width('200'),这通常是因为约束尺寸(constraintSize)的设置在某些情况下可能与组件的默认布局行为或尺寸计算逻辑产生了交互。

在鸿蒙的组件系统中,Image组件的尺寸可能受到其容器(如List)的布局方向、自身的宽高比以及设置的约束条件共同影响。如果你只设置了maxHeight而未设置maxWidth,系统可能会根据Image的原始宽高比自动调整宽度以保持比例,但在某些特定布局或约束条件下,这种自动调整可能会产生意外的结果。

此外,List组件的布局方式(如水平滚动、垂直滚动等)也可能影响其子组件(如Image)的尺寸表现。如果List设置为水平滚动且Image的宽度被约束,那么高度设置可能不会对最终显示效果产生直接影响,因为滚动方向主要影响的是宽度。

综上所述,当你遇到.constraintSize({maxHeight: 200})效果不符合预期时,可能是由于上述原因导致的。你可以尝试同时设置maxHeightmaxWidth,或者调整List和Image的布局属性,以获得更符合预期的效果。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部