Styling individual tabs in a TabBar control

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 >

你可能感兴趣的:(tabs)