我有一个项目渲染器,我想更改其默认颜色:
<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也不起作用:
s|ItemRenderer{
backgroundColor:#2e2e2e;
}如何更改项目渲染器的背景颜色?
发布于 2013-03-06 07:52:51
刚开始的时候,这总是让人有点困惑。在我看来,样式的名字选得不好。血淋淋的细节都在ItemRenderer类的drawBackground()方法中。
您可以在List组件本身上设置contentBackgroundColor样式,它对渲染器没有任何影响。它将填充列表的背景颜色,但通常渲染器会占据该区域的所有区域,因此您永远看不到它。例如,如果列表很高,但只有1到2个项目(因此底部的空间不会被渲染器覆盖),它将是可见的。
设置渲染器背景颜色的:
使用alernatingItemColors样式,而不是使用contentBackgroundColor。此样式需要一个值数组。如果只想要一种颜色,只需在数组中放入一个元素:
alternatingItemColors="[#c0c0c0]"通过查看drawBackground()中的代码,如果你想在背景颜色上设置一个alpha,你必须自己绘制背景(见下文)。
您可能希望设置的其他背景相关样式:
downColorselectionColorrollOverColor用于绘制您自己的背景色的:
将autoDrawBackground属性设置为false。这意味着您现在必须为所有不同的渲染器状态(“正常”、“选定”、“悬停”等)绘制自己的颜色。幸运的是,你可以在渲染器中使用上面在你选择的背景对象上使用的相同的状态语法(一个` `Rect,等等)来做这件事。
<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>https://stackoverflow.com/questions/15235694
复制相似问题