Flex - 具有网格布局的中继器组件

时间:2009-08-03 20:19:10

标签: flex repeater grid-layout

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

也许有另一种方法可以做到我尚未见过,所以任何建议都值得赞赏。谢谢!

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

一个月太晚了,但我一直处于相同的情况,我需要一些瓷砖列表无法给我的功能。 see my question here


所以我的中继器网格宽900像素。每列宽300px,每行高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>

那么你如何阅读这段代码:

市长部分在转发器内的画布中处理。正如您所看到的,每个画布的宽度为300px(每列宽度),高度为31px。通过使用模数,您可以定义元素的x位置。

假设数据提供者中有6个项目:

x =“{rptCities.currentIndex%3 * 300}”

第一项:0%3 == x-position: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-position:0 * 32

第二项:1/3 == y-position:0 * 32(0.33)

第三项:2/3 == y-position:0 * 32(0.66)

第四项:3/3 == y-位置:1 * 32

当转发器位于第四项时,x-和y-位= x:0和y:32位于第二个'行'


对于相当大的答案感到抱歉。