我有一个列表控件,我想显示一个字符串(很好),但也有彩色方块。
想象一下,我有一个“添加播放器”按钮,带有颜色选择器的文本输入。我想在列表中看到颜色+玩家名称。我怎么能这样做?
[Bindable]
public var data:ArrayCollection = new ArrayCollection();
<mx:List id="eqlist" width="100%" dataProvider="{data}" />
data.addItem(fooTxt.text);
这段代码只会添加文本值,我应该添加一个由彩色画布+文本值组成的hbox对象吗?
谢谢,
答案 0 :(得分:7)
您必须使用List itemRenderers。 基本上,List项目渲染器(ListItemRenderer)不支持每个项目的不同背景颜色(背景颜色只能在List父级上设置)。
示例(MXML版本 - 不是我最喜欢的方式,但最简单):
数据提供程序初始化:
var anObject: Object = new Object();
anObject.label = "my player";
anObject.backgroundColor = 0xFF0000;
anObject.color = 0xFFFFFF;
aData.addItem(anObject);
anObject = new Object();
anObject.label = "my player 2";
anObject.backgroundColor = 0x0000FF;
anObject.color = 0xAAAAAA;
aData.addItem(anObject);
列表显示:
<mx:List id="eqlist" width="100%" dataProvider="{aData}" >
<mx:itemRenderer>
<mx:Component>
<mx:Canvas backgroundColor="{data.backgroundColor}"
color="{data.color}">
<mx:Label text="{data.label}">
</mx:Label>
</mx:Canvas>
</mx:Component>
</mx:itemRenderer>
</mx:List>