从itemrenderer访问布局数据

时间:2014-08-29 11:29:57

标签: flex air flex-spark

我正在处理FLEX / AIR Spark列表,其中列出了具有不同宽度和高度的图像集合。

我正在使用以这种方式工作的自定义布局:

  • 根据宽度确定当前行中可以容纳的图像数量。

  • 以这样的方式证明他们:行中的第一个图像服从"左"边缘和行中的最后一个图像服从"右边"保证金,所以" top"和"底部"根据用户的指定,我们说10像素。

  • 作为示例,假设当前行具有4个图像,则图像1& 4将具有10个像素作为" left"保证金"权利"保证金分别。但是1-2和2-3之间的左右间隙。 3-4将根据不同的宽度进行平均分配。

  • 现在我想绘制一个填充动态区域的背景。请参阅下面的图片以获得一个想法:

Layout requirement Image

**在图像中,灰色区域是我想要绘制的背景,彩色矩形代表不同宽度和高度的图像。**

  • " rowHeight"是基于行内单个图像的最大高度而变化的。

的问题:

a)现在我想绘制一个填充列表背景区域的背景(参见图中的灰色区域)。我知道当前项目的宽度&高度,但我不知道rowHeight由图像之间的布局,左右边距决定。

类似的东西:

bgRect:Rectangle = new rectangle ( 0, 0, (imgWidth + (LeftMargin/2) + (Right Margin/2) ), rowHeight)

b)如何/在何处实施背景?如果我根据布局在项目渲染器中添加BG区域,则布局将再次进行中继。

2 个答案:

答案 0 :(得分:0)

应该在createChildren方法中添加子项。绘制(绘画)背景应该在updateDisplayList方法中进行。

答案 1 :(得分:0)

您可以通过itemrenderer工厂将数据传递给itemrenderer。见 - Flex - Sending a parameter to a custom ItemRenderer?

var productRenderer:ClassFactory = new ClassFactory(ProductRenderer); productRenderer.properties = {showProductImage:true}; myList.itemRenderer = productRenderer;