The following example shows how you can change the button’s label placement relative to its icon in a ButtonBar control in Flex by using the getChildAt() method and labelPlacement property.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/01/08/changing-the-label-placement-for-a-flex-buttonbar-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.controls.Button;
            import mx.controls.ButtonLabelPlacement;

            [Bindable]
            [Embed("assets/arrow_down.png")]
            private var arrowDown:Class;

            [Bindable]
            [Embed("assets/arrow_left.png")]
            private var arrowLeft:Class;

            [Bindable]
            [Embed("assets/arrow_right.png")]
            private var arrowRight:Class;

            [Bindable]
            [Embed("assets/arrow_up.png")]
            private var arrowUp:Class;

            private function init():void {
                var idx:uint;
                var len:uint = buttonBar.numChildren;
                var btn:Button;
                /* Loop over each button. */
                for (idx = 0; idx < len; idx++) {
                    /* Get reference to current Button. */
                    btn = buttonBar.getChildAt(idx) as Button;
                    /* Set labelPlacement property to current item in
                       arr Array object. */
                    btn.labelPlacement = arr[idx].label;
                }
            }
        ]]>
    </mx:Script>

    <mx:Array id="arr">
        <mx:Object label="left" img="{arrowLeft}" />
        <mx:Object label="right" img="{arrowRight}" />
        <mx:Object label="top" img="{arrowUp}" />
        <mx:Object label="bottom" img="{arrowDown}" />
    </mx:Array>

    <mx:ButtonBar id="buttonBar"
            dataProvider="{arr}"
            iconField="img"
            buttonHeight="64"
            width="500"
            creationComplete="init();" />

</mx:Application>

View source is enabled in the following example.

 
Tagged with:
 
About The Author

Peter deHaan

Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.

3 Responses to Changing the label placement for a Flex ButtonBar control

  1. Charitha says:

    Thank you very much. I was searching for such thing. Tried to set it using CSS but it didn’t work. This works perfectly. Grate code..

  2. Ankush says:

    awesome!! Thanks

  3. marcus says:

    beautiful work. keep it up!