9.9.同一个程序中使用多个主题

9.9.1.问题
你想在同一程序中利用多个主题颜色以区分控件。
9.9.2.解决办法
运用容器的themeColor 属性来规定相应的彩色值。
9.9.3.讨论
你能利用<mx:Canvas>的themeColor 属性在同一程序中为控件指派不止一个Flex 主题。运用主题颜色可以改变在滚动、选择等相似的视图处理时被操作控件的外观。

本招的例子向<mx:Canvas> 窗口添加三个子组件来显示三个主题的外貌。Flex 程序的默认主题颜色在框架中defaults.css 的全局样式声明中被设为haloBlue, 但是还有很多可用只要你喜欢就可用。

首先创造数据提供器dp,允许其可绑定。其次声明三个包含了themeColor 属性将被设置的组件的Canvas 实例。再对每个Canvas 实例的mx.controls.ComboBox 和mx.controls.DataGrid 子组件运用相同的dp 数据提供器。注视:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="636height="241">

<mx:Script>
<![CDATA[
[Bindable]
private var dp:Array = [{label:'Carole King', Album:'Tapestry',:1},{label:'Paul Simon', data:2},{label:'Original Cast', data:3},{label:'The Beatles', data:4}];

]]>
</mx:Script>
<mx:Label x="10y="7text="Standard ThemefontWeight="boldcolor="#ffffff"/>
<mx:Label x="218y="7text="Green ThemefontWeight="boldcolor="#ffffff"/>
<mx:Label x="426y="7text="Silver ThemefontWeight="boldcolor="#ffffff"/>
<mx:Canvas x="10width="200height="200verticalCenter="10.5">
<mx:ComboBox x="10y="10dataProvider="{dp}width="180">
</mx:ComboBox>
<mx:DataGrid x="10y="40width="180height="120dataProvider="{dp}">
<mx:columns>
<mx:DataGridColumn headerText="IddataField="datawidth="30" />
<mx:DataGridColumn headerText="ArtistdataField="label" />
</mx:columns>
</mx:DataGrid>
<mx:Button x="10y="168label="Button"/>
</mx:Canvas>
<mx:Canvas x="426width="200height="200themeColor="haloSilververticalCenter="10.5"
backgroundColor="#ffffffcornerRadius="8borderStyle="solid">

<mx:ComboBox x="10y="10dataProvider="{dp}width="180">
</mx:ComboBox>
<mx:DataGrid x="10y="40width="180height="120dataProvider="{dp}">
<mx:columns>
<mx:DataGridColumn headerText="IddataField="datawidth="30" />
<mx:DataGridColumn headerText="ArtistdataField="label" />
</mx:columns>
</mx:DataGrid>
<mx:Button x="10y="166label="Button"/>
</mx:Canvas>
<mx:Canvas x="218width="200height="200themeColor="haloGreenverticalCenter="10.5backgroundColor="#ffffffcornerRadius="8borderStyle="solidalpha="0.5">
<mx:ComboBox x="10y="10dataProvider="{dp}width="180">
</mx:ComboBox>
<mx:DataGrid x="10y="40width="180height="120dataProvider="{dp}">
<mx:columns>
<mx:DataGridColumn headerText="IddataField="datawidth="30" />
<mx:DataGridColumn headerText="ArtistdataField="label" />
</mx:columns>
</mx:DataGrid>
<mx:Button x="10y="166label="Button"/>
</mx:Canvas>
</mx:Application>

当在容器实例中应用themeColor 属性值,那个容器的显示列表中任一子组件通过继承取得主题颜色。尽管你能用关键字符串替代在Flex 框架中可用的颜色值(例如haloOrange),你最好还是按照十六进制格式赋任何正确颜色值或者在运行时利用StyleManager.registerColorName 方法来创造自定义的关键字符串值。

加支付宝好友偷能量挖...


评论(0)网络
阅读(96)喜欢(0)flash/flex/fcs/AIR