Styling individual tabs in a TabBar control
Posted on 2008-01-13 15:41 OldHawk 阅读(466) 评论(0) 编辑 收藏 举报
following example shows how you can style individual tabs in a Flex TabBar control by calling the
getChildAt()
method on the tab bar, and then calling setStyle()
on the returned Tab reference.
A big thanks to Joan for helping me figure it out
<?xml version="1.0"?>
<!-- http://blog.flexexamples.com/2007/11/19/styling-individual-tabs-in-a-tabbar-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.controls.tabBarClasses.Tab;
private function tabBar_creationComplete():void {
var colorArr:Array = ["red", "haloOrange", "yellow", "haloGreen", "haloBlue"];
var color:String;
var tab:Tab;
var idx:uint;
var len:uint = tabBar.dataProvider.length;
for (idx = 0; idx < len; idx++) {
var i:int = idx % colorArr.length;
color = colorArr[i];
tab = Tab(tabBar.getChildAt(idx));
tab.setStyle("fillColors", [color, "white"]);
tab.setStyle("fillAlphas", [1.0, 1.0]);
tab.setStyle("backgroundColor", color);
}
}
private function tabBar_itemClick(evt:ItemClickEvent):void {
viewStack.selectedIndex = evt.index;
}
]]>
</mx:Script>
<mx:Array id="arr">
<mx:Object label="Red" />
<mx:Object label="Orange" />
<mx:Object label="Yellow" />
<mx:Object label="Green" />
<mx:Object label="Blue" />
</mx:Array>
<mx:TabBar id="tabBar"
dataProvider="{arr}"
creationComplete="tabBar_creationComplete();"
itemClick="tabBar_itemClick(event);" />
<mx:ViewStack id="viewStack"
width="{tabBar.width}"
styleName="plain">
<mx:VBox id="redVBox" width="100%" height="100">
<mx:Label text="Red VBox" />
</mx:VBox>
<mx:VBox id="orangeVBox" width="100%" height="100">
<mx:Label text="Orange VBox" />
</mx:VBox>
<mx:VBox id="yellowVBox" width="100%" height="100">
<mx:Label text="Yellow VBox" />
</mx:VBox>
<mx:VBox id="greenVBox" width="100%" height="100">
<mx:Label text="Green VBox" />
</mx:VBox>
<mx:VBox id="blueVBox" width="100%" height="100">
<mx:Label text="Blue VBox" />
</mx:VBox>
</mx:ViewStack>
</mx:Application>
<!-- http://blog.flexexamples.com/2007/11/19/styling-individual-tabs-in-a-tabbar-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.controls.tabBarClasses.Tab;
private function tabBar_creationComplete():void {
var colorArr:Array = ["red", "haloOrange", "yellow", "haloGreen", "haloBlue"];
var color:String;
var tab:Tab;
var idx:uint;
var len:uint = tabBar.dataProvider.length;
for (idx = 0; idx < len; idx++) {
var i:int = idx % colorArr.length;
color = colorArr[i];
tab = Tab(tabBar.getChildAt(idx));
tab.setStyle("fillColors", [color, "white"]);
tab.setStyle("fillAlphas", [1.0, 1.0]);
tab.setStyle("backgroundColor", color);
}
}
private function tabBar_itemClick(evt:ItemClickEvent):void {
viewStack.selectedIndex = evt.index;
}
]]>
</mx:Script>
<mx:Array id="arr">
<mx:Object label="Red" />
<mx:Object label="Orange" />
<mx:Object label="Yellow" />
<mx:Object label="Green" />
<mx:Object label="Blue" />
</mx:Array>
<mx:TabBar id="tabBar"
dataProvider="{arr}"
creationComplete="tabBar_creationComplete();"
itemClick="tabBar_itemClick(event);" />
<mx:ViewStack id="viewStack"
width="{tabBar.width}"
styleName="plain">
<mx:VBox id="redVBox" width="100%" height="100">
<mx:Label text="Red VBox" />
</mx:VBox>
<mx:VBox id="orangeVBox" width="100%" height="100">
<mx:Label text="Orange VBox" />
</mx:VBox>
<mx:VBox id="yellowVBox" width="100%" height="100">
<mx:Label text="Yellow VBox" />
</mx:VBox>
<mx:VBox id="greenVBox" width="100%" height="100">
<mx:Label text="Green VBox" />
</mx:VBox>
<mx:VBox id="blueVBox" width="100%" height="100">
<mx:Label text="Blue VBox" />
</mx:VBox>
</mx:ViewStack>
</mx:Application>