我有一个随机大小的项目数组。我想为 Repeater 组件中的每个项目显示一个标签。我希望它们以 5 列和所需行数的网格布局显示。我如何在 Flex / ActionScript 中做到这一点?
也许还有另一种我还没有看到的方法,所以任何建议都值得赞赏。谢谢!
我有一个随机大小的项目数组。我想为 Repeater 组件中的每个项目显示一个标签。我希望它们以 5 列和所需行数的网格布局显示。我如何在 Flex / ActionScript 中做到这一点?
也许还有另一种我还没有看到的方法,所以任何建议都值得赞赏。谢谢!
我会使用平铺列表而不是中继器。这是一个例子:
一个月太晚了,但我一直处于同样的情况,我需要某些功能,而瓦片列表无法提供给我。 在这里看到我的问题
所以我的中继器网格是 900 像素宽。每列宽 300 像素,每行高 31 像素,中间有 1 像素空白。一共3列。
编码:
<mx:Repeater id="rptCities" dataProvider="{citiesArr}">
<mx:Canvas label="{rptCities.currentItem.city}" x="{rptCities.currentIndex%3 * 300}" y="{int(rptCities.currentIndex/3) * 32}" width="300" height="31">
<mx:Label text="{rptCities.currentItem.city}"/>
</mx:Canvas>
</mx:Repeater>
那么你如何阅读这段代码:
市长部分在中继器内的画布中处理。如您所见,每个画布的宽度为 300 像素(每列的宽度),高度为 31 像素。通过使用模数,您可以定义元素的 x 位置。
假设数据提供者中有 6 个项目:
x="{rptCities.currentIndex%3 * 300}"
第一项:0%3 == x 位置:0*300
第二项:1%3 == x-位置:1*300
第三项:2%3 == x-位置:2*300
第四项:3%3 == x-位置:0*300
这会处理元素的 x 位置。我将元素的 y 位置定义为 32 为常数值,因为我希望在它们之间留出 1px 的空间。通过将数字转换为整数,您可以获得四舍五入的值(斜体值是数字值,正常字体类型是整数 flex 考虑在内)
y="{int(rptCities.currentIndex/3) * 32}"
第一项:0/3 == y 位置:0*32
第二项:1/3 == y 位置:0*32 (0.33)
第三项:2/3 == y 位置:0*32 (0.66)
第四项:3/3 == y 位置:1*32
当中继器位于第四个项目时,x 和 y 位置 = x:0 和 y:32,位于第二个“行”
抱歉,答案相当大。