如何在FLEX中更改DropDown List BackGround颜色?

时间:2011-09-17 21:01:32

标签: flex flex4 mxml flex4.5

这是我到目前为止所做的。

       <!-- fill -->
        <!--- Defines the appearance of drop-down list's background fill. -->
        <s:Rect id="background" left="1" right="1" top="1" bottom="1" >
            <s:fill>
            <!---  
                The color of the drop down's background fill.
                The default color is 0xFFFFFF.
            -->
                <s:SolidColor id="bgFill" color="#DB9E36"/>
            </s:fill>
        </s:Rect>

如果你仔细观察,你会发现我已经改变了bgFill颜色的默认值。但是,当我运行我的应用程序时,下拉列表的背景颜色仍然是默认的白色。

我在这里做错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:5)

简单的方法是使用contentBackgroundColor样式。像这样:

<s:DropDownList contentBackgroundColor="0xDB9E36" >
    <s:dataProvider>
        <mx:ArrayCollection>
            <fx:String>Flash</fx:String> 
            <fx:String>Director</fx:String> 
            <fx:String>Dreamweaver</fx:String> 
            <fx:String>ColdFusion</fx:String> 
            <fx:String>Flash</fx:String> 
            <fx:String>Director</fx:String> 
            <fx:String>Dreamweaver</fx:String> 
            <fx:String>ColdFusion</fx:String> 
            <fx:String>Flash</fx:String> 
            <fx:String>Director</fx:String> 
            <fx:String>Dreamweaver</fx:String> 
            <fx:String>ColdFusion</fx:String> 
        </mx:ArrayCollection>           
    </s:dataProvider>
</s:DropDownList>

更多细节..

创建自定义皮肤时;有一个名为contentFill的属性列表;定义如下:

 static private const contentFill:Array = ["bgFill"];

你会注意到这里列出的值是bgFill;您尝试更改颜色的相同背景..可以使用contentItem属性公开检索它:

override public function get contentItems():Array {return contentFill};

SparkSkin类[默认情况下所有MXML外观都会扩展]在updateDisplayList中访问此值。 contentItems数组中的每个属性都使用contentBackgroundColor指定它的背景颜色,并使用contentBackgroundAlpha指定它的alpha。

在MXML中明确定义值然后[可能]在ActionScript中覆盖,这有点误导。