相关问题
#鸿蒙通关秘籍#鸿蒙栅格布局中如何设置布局的总列数?
190浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙栅格布局中自定义断点?
260浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中设置GridRow的总列数?
318浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何自定义鸿蒙图片组件的布局参数?
303浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何自定义GridItem布局在鸿蒙开发中?
235浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在HarmonyOS Next中使用Flex组件进行图片布局时,如何自定义列数来实现不同的布局效果?
239浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何为自定义组件实现自定义布局?
231浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中定义自定义转场动画?
259浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中实现自定义菜单样式?
298浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Grid布局中跨行跨列放置组件?
325浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS中自定义底部标签栏的样式和布局?
160浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何实现自定义安全键盘的布局?
252浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙的ArkTS中创建自定义Sendable类?
280浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中自定义Swiper组件的切换动画?
321浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中创建自定义组件?
226浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中如何为栅格子组件设置偏移列数?
181浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何自定义FrameNode的测量布局与绘制?
295浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中自定义焦点框样式?
257浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS Next中自定义Stepper组件?
259浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何自定义鸿蒙全局状态弹窗的布局和内容?
211浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙ArkUI中创建并显示自定义弹窗?
201浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在自定义弹窗中实现路由跳转?
336浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中自定义视频控制器?
267浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙OS中对绘制组件自定义样式?
254浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中查询自定义组件的页面信息?
204浏览 • 1回复 待解决
在鸿蒙开发中,可以通过传入自定义列数的参数实现图片布局的自定义列数。在
aboutToAppear
方法中判定传入的col
参数,当col
大于0时,按照自定义列数计算所需的行数和每张图片的宽度。然后在build
方法中使用Flex
组件和ForEach
循环,传入的col
值会决定每行图片的数量,从而实现自定义列数的布局。typescript aboutToAppear() { this.arraySize = this.imageSource.length; if (this.col > COLUMNS_0) { this.row = Math.ceil(this.arraySize / this.col); this.imageWidth =
calc((100% - ${this.imageSpacing * (this.col - 1)}vp ) / ${this.col})
; } }build() { Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) { ForEach(this.imageSource.slice(0, this.arraySize), (item: string | Resource, idx: number) => { Image(item) .attributeModifier(this.modifier) .autoResize(true) .objectFit(this.imageFit) .aspectRatio(this.imageAspectRatio) .width(this.imageWidth) .margin({ bottom: (idx + 1) > ((this.row - 1) * this.col) ? 0 : this.imageSpacing, right: (idx + 1) % this.col === 0 ? 0 : this.imageSpacing }); }); }.width(this.flexWidth); }