在flex中为列表中的标签添加颜色

时间:2013-08-19 21:03:54

标签: actionscript-3 list flex components

我很困惑如何得到这个...所以我有一个用户列表,当有人加入它时将它们添加到列表(他们的用户名)我有办法找出他们是否是管理员我只需要知道我如何改变该列表中每个用户的颜色...这是一个例子....

如果列表支持html,这将正常工作

onlineUsers.addItem({label:"<font color='$ffffff'>users[i].userName+"_GUEST</font>",id:users[i].userID,guest:"True"});
userList.dataProvider = onlineUsers

但是列表不支持html,任何人都知道解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

通常,您的答案是使用itemRenderer。

所有列表类都显示其他组件(渲染器)并从dataProvider发送这些组件数据以显示。实际上,您的意思是默认的itemRenderer不支持HTML。从技术上讲,你可以制作一个支持HTML的itemRenderer,为你提供所需的颜色变化;但我会采取不同的方式。

向用户对象添加属性,指明他们是否是管理员用户。然后iF用户是管理员用户;然后;改变颜色。从概念上讲是这样的:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    autoDrawBackground="false" dataChange="onDataChange()">

    <fx:Script>
        <![CDATA[
            public function onDataChange():void{
               labelDisplay.text = data.userName + "_Guest";
               if(data.isAdmin){
                 labelDisplay.setStyle('color',0xff0000);
               } else {
                 labelDisplay.setStyle('color',0x00FF00);
               }
            }
        ]]>
    </fx:Script>

    <s:Label id="labelDisplay" 
        /> 
</s:ItemRenderer>