2011-09-19 53 views
0

我试图制作一个标签的水平列表,并在它们之间存在一个空格(用于作为自动收报器磁带的一部分)。从Flex 4删除默认样式(spark)ItemRenderer

列表外部的标签具有透明背景,但是作为ItemRenderer或List的一部分,它们将获得白色背景。我的假设是这是应用于Spark ItemRenderer的默认样式的一部分。

问题 - 有什么办法可以完全摆脱应用于ItemRenderer的所有默认视觉样式吗?

protected var messages:ArrayCollection = new ArrayCollection(new Array("1", "2", "3", "etc")); 

<s:List dataProvider="{messages}" itemRenderer="SimpleTextRenderer"> 
    <s:layout > 
     <s:HorizontalLayout verticalAlign="middle" /> 
    </s:layout> 
</s:List> 

SimpleTextRenderer:

<?xml version="1.0" encoding="utf-8"?> 
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      autoDrawBackground="false" contentBackgroundAlpha="0" > 

    <s:Label text="{data}" /> 

</s:ItemRenderer> 
+0

你不能真正摆脱样式,只能取代它们。所以你最好的选择是为itemRenderers – JeffryHouser

+0

创建一个新的全新风格你的意思是在css中创建一个样式并在ItemRenderer的styleName中引用它。 – Jono

+0

是的;这就是我的意思。 – JeffryHouser

回答

1

您可以实现自己的自定义项目渲染器,扩展UIComponent(或标签),例如,实施IItemRenderer。其实很简单,正如here所解释的(你不需要实现两个给定的接口,因为一个实现了另一个接口)。

这将允许您摆脱样式和东西,因为您将精确地管理组件通过验证周期呈现的方式。