19
Nov
07

Styling individual tabs in a TabBar control

The 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.

Full code after the jump.

View MXML

<?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>

View source is enabled in the following example.


1 Response to “Styling individual tabs in a TabBar control”


  1. 1 Rob Sherman Dec 19th, 2007 at 12:57 pm

    I’d sure like to see the swf that goes with this..

Leave a Reply

This blog is terrible at eating HTML tags. If you plan on posting code/XML, please escape your "<" characters as "&lt;" and your ">" characters as "&gt;".




November 2007
M T W T F S S
« Oct   Dec »
 1234
567891011
12131415161718
19202122232425
2627282930  

Badge Farm

  • Firefox 2
  • Powered by Redoable 1.2
  • Feeds burnt by Feedburner
  • Feed