2

我有一个随机大小的项目数组。我想为 Repeater 组件中的每个项目显示一个标签。我希望它们以 5 列和所需行数的网格布局显示。我如何在 Flex / ActionScript 中做到这一点?

也许还有另一种我还没有看到的方法,所以任何建议都值得赞赏。谢谢!

4

2 回答 2

2

我会使用平铺列表而不是中继器。这是一个例子:

http://blog.flexexamples.com/2007/09/28/using-the-flex-tilelist-classs-new-datachangeeffect-style-in-flex-3/

于 2009-08-03T21:15:56.323 回答
0

一个月太晚了,但我一直处于同样的情况,我需要某些功能,而瓦片列表无法提供给我。 在这里看到我的问题


所以我的中继器网格是 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,位于第二个“行”


抱歉,答案相当大。

于 2009-09-03T10:37:05.823 回答