首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemRenderer更改背景颜色

ItemRenderer更改背景颜色
EN

Stack Overflow用户
提问于 2013-03-06 06:51:32
回答 1查看 6.2K关注 0票数 4

我有一个项目渲染器,我想更改其默认颜色:

代码语言:javascript
复制
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx"
                initialize="init(event)"
                creationComplete="created(event)"
                dataChange="created(event)"
                width="100%"
                maxWidth="{FlexGlobals.topLevelApplication.width}"
                contentBackgroundColor.hovered="0xff0018"
                focusColor="0xff00ff"
                contentBackgroundAlpha="0.8">

        <s:states>
            <s:State name="normal"/>
            <s:State name="hovered"/>
            <s:State name="selected"/>
        </s:states>

上述代码中的样式不起作用。

我还尝试将contentBackgroundColor添加到列表元素中,但这只改变了列表的背景,而不是条目。

css也不起作用:

代码语言:javascript
复制
s|ItemRenderer{
    backgroundColor:#2e2e2e;
}

如何更改项目渲染器的背景颜色?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 07:52:51

刚开始的时候,这总是让人有点困惑。在我看来,样式的名字选得不好。血淋淋的细节都在ItemRenderer类的drawBackground()方法中。

您可以在List组件本身上设置contentBackgroundColor样式,它对渲染器没有任何影响。它将填充列表的背景颜色,但通常渲染器会占据该区域的所有区域,因此您永远看不到它。例如,如果列表很高,但只有1到2个项目(因此底部的空间不会被渲染器覆盖),它将是可见的。

设置渲染器背景颜色的

使用alernatingItemColors样式,而不是使用contentBackgroundColor。此样式需要一个值数组。如果只想要一种颜色,只需在数组中放入一个元素:

代码语言:javascript
复制
alternatingItemColors="[#c0c0c0]"

通过查看drawBackground()中的代码,如果你想在背景颜色上设置一个alpha,你必须自己绘制背景(见下文)。

您可能希望设置的其他背景相关样式:

  • downColor
  • selectionColor
  • rollOverColor

用于绘制您自己的背景色的

autoDrawBackground属性设置为false。这意味着您现在必须为所有不同的渲染器状态(“正常”、“选定”、“悬停”等)绘制自己的颜色。幸运的是,你可以在渲染器中使用上面在你选择的背景对象上使用的相同的状态语法(一个` `Rect,等等)来做这件事。

代码语言:javascript
复制
<s:ItemRenderer autodrawBackground="false">
    <s:states>
        <s:State name="normal"/>
        <s:State name="hovered"/>
        <s:State name="selected"/>
    </s:states>
    <s:Rect id="theBackgroundObject" top="0" bottom="0" left="0" right="0">
        <s:fill>
            <s:SolidColor color="#FF0000" color.hovered="#00FF00"
                alpha="1" alpha.hovered=".5" />
        </s:fill>
    </s:Rect>
</s:ItemRenderer>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15235694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档