Как изменить цвет фона DropDownList в FLEX? - PullRequest
2 голосов
/ 18 сентября 2011

Это то, что я сделал до сих пор.

       <!-- 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 Ответ

5 голосов
/ 18 сентября 2011

Простой способ сделать это - использовать стиль 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.

Это немного вводит в заблуждение, что значение явно определено в MXML, а затем [потенциально] перезаписано в ActionScript.

...