【问题标题】:Add color to label on list in flex将颜色添加到 flex 列表中的标签
【发布时间】:2013-08-21 19:09:42
【问题描述】:

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

如果列表支持 html,则可以正常工作

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

但是 list 不支持 html,有谁知道解决这个问题的方法吗?

【问题讨论】:

    标签: actionscript-3 list apache-flex components


    【解决方案1】:

    一般来说,您的答案是使用 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>
    

    【讨论】:

    • 有一个问题会将每个人的颜色更改为该颜色:[
    • 您是说您尝试过并且我的代码中有错误吗?还是你在说别的?编写的代码不会改变每个人的颜色。如果“用户”对象定义了 isAdmin 属性;然后它将被设置为一种颜色。如果用户不这样做,它将被设置为不同的颜色。该代码在 onDataChange 函数中。或者,您可以为每个用户提供一个 isAdmin 属性,并将其设置为 true 用于管理员用户,将其设置为 false 用于非管理员用户。当然,我确实在浏览器中编写了代码。所以可能会有错误。
    • 它确实有一个管理属性,但是当我执行 .setStyle('color',0xff0000);
    • 它将所有名称设置为该颜色
    • 您必须为您的对象添加一个 isAdmin 属性,以便代码选择“默认”以外的颜色。我将编辑我的答案以使我的建议更清楚。
    猜你喜欢
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2014-01-12
    • 2010-12-06
    相关资源
    最近更新 更多