将颜色添加到 flex 列表中的标签

Posted

技术标签:

【中文标题】将颜色添加到 flex 列表中的标签【英文标题】:Add color to label on list in 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,有谁知道解决这个问题的方法吗?

【问题讨论】:

【参考方案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 属性,以便代码选择“默认”以外的颜色。我将编辑我的答案以使我的建议更清楚。

以上是关于将颜色添加到 flex 列表中的标签的主要内容,如果未能解决你的问题,请参考以下文章

怎么可以改变Li标签的背景颜色

仅将文本颜色添加到 HTML 上的推文的主题标签

添加颜色以匹配twitter typeahead中的文本突出显示

更改绘图热图中的颜色条标签 (R)

s:label 中的标签焦点颜色变化

如何在swiftUI中将背景颜色添加到列表中