我正在从xml文件中将项目填充到comboBox。我正在尝试自定义comboBox中显示的每个项目的字体颜色。有什么建议吗?
谢谢! --Moe
答案 0 :(得分:0)
如果您使用Flash Builder,过程很简单。 ComboBox中的每个项目都由ItemRenderer组成。创建一个自定义项目渲染(文件 - > new - > mxml组件),扩展该基本ItemRenderer类,然后将此新的ItemRenderer分配给您的ComboBox。现在,在您的自定义ItemRenderer中,您可以更改值,字体大小等...
答案 1 :(得分:0)
您需要使用ItemRenderer
。虽然你没有提到,但似乎你正在使用Flex 3.使用ItemRenderer
的方式在Flex 3和Flex 4中略有不同。所以这是Flex 3的版本:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
<mx:XMLList id="statesXMLList" xmlns="">
<state abbrev="AK" name="Alaska" />
<state abbrev="AZ" name="Arizona" />
<state abbrev="AR" name="Arkansas" />
<state abbrev="CA" name="California" />
<state abbrev="CO" name="Colorado" />
<state abbrev="CT" name="Connecticut" />
</mx:XMLList>
<mx:ComboBox id="comboBox"
prompt="Please select a State..."
dataProvider="{statesXMLList}"
rowCount="3"
labelField="@name"
itemRenderer="ComboBoxItemRenderer"
/>
</mx:Application>
ItemRenderer
的课程为ComboBoxItemRenderer
,如下所示:
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
lbl.text = value.@name;
if(value.@abbrev == "AK") {
lbl.setStyle("color","#FF0000");
}
else if(value.@abbrev == "AR") {
lbl.setStyle("color","#FF00FF");
}
else {
lbl.setStyle("color","#000000");
}
}
]]>
</mx:Script>
<mx:Label id="lbl"/>
</mx:VBox>
每当您覆盖if
方法时,请不要忘记最后set data
(默认情况)。