The following example shows how you can set some of the deprecated styles in the Accordion container (such as fillAlphas, fillColors, and selectedFillColors) by using the headerStyleName style.
Full code after the jump.
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/10/26/customizing-the-accordion-header-in-flex-3/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="top"
backgroundColor="white">
<mx:Style>
.accHeader {
fillColors: haloSilver, haloBlue;
fillAlphas: 1.0, 0.5;
selectedFillColors: black, black;
}
</mx:Style>
<mx:Accordion id="accordion"
headerStyleName="accHeader"
resizeToContent="true"
width="100%">
<mx:VBox label="Red"
backgroundColor="red"
width="100%"
height="200" />
<mx:VBox label="Orange"
backgroundColor="haloOrange"
width="100%"
height="120" />
<mx:VBox label="Yellow"
backgroundColor="yellow"
width="100%"
height="160" />
<mx:VBox label="Green"
backgroundColor="haloGreen"
width="100%"
height="80" />
<mx:VBox label="Blue"
backgroundColor="haloBlue"
width="100%"
height="140" />
</mx:Accordion>
</mx:Application>
View source is enabled in the following example.



Sorry for the lack of the SWF in today’s entry. Currently my LCD monitor at home is broken, and it is proving a bit difficult trying to type while staring at a 17″ CRT balanced on a phonebook on the floor. :)
I’ll see if I can publish out a SWF and upload it tomorrow.
Peter
Your posts on Accordion headers are just what i needed…
thanks peter.. your blog is the first place i come looking for Flex Examples…
Hi,
is it possible to colour individual headers of the accordion?
Oh and by the way, some of the fonts on your website are a bit screwy in the searchcoders dashboard.
cheers,
Joc
Hey Peter,
Is it possible to color individual headers of the accordion?
Cheers,
Madhu
Madhu,
I believe you can, yes. For example, I can set different label colors for each accordion heading by using the following snippet:
accordion.getHeaderAt(0).setStyle("color", "red");For more information, see “Setting styles on individual Flex Accordion headers”.
Peter
Hi Peter,
I’ve been reading a lot about your posts and it has really helped me do my tasks and learn more about flex. I just would like to know why I’m getting the error everytime I click in to btn1.
:
“TypeError: Error #1009: Cannot access a property or method of a null object reference.
at test/::arr()
at test/__btn1_click()
”
Here’s the code.
Your answer would really help a lot.
Thanks,
nold
nold,
You may have to try doing a search/replace with < to <. Sorry. Posting code in these comments is pretty quirky.
Peter
Hi Peter,
Sorry about that. I figured out the problem. I was able to learn that objects in Flex are not created until they are visible. I was doing som stuff with accordion and wondering why some objects are not changing.
Anyway, thank you for replying. Rest assured I will be back for your help. :)
nold
Nice example, what other CSS changes we can do?
hie
is it possible to show collapsed all the accordian headers in the begining.?
good, i have saved it in my google notebook.
Hey
Thanks for showing us its really helpfull. One question though
Is there a way to change the font colour of the selected heading in the css. such as a selectedColor or something? I can’t seem to find anything.
david,
I can’t find anything either. The closest I’ve gotten is the
textSelectedColorstyle in the Button class (the Accordion headers subclass the Button control). But setting this style only affects the text color when the user presses the button, not the color of the label while the button is in the selected state.You could try filing an enhancement request at http://bugs.adobe.com/flex/
Peter
Hi Peter,
Thanks for your help!!!
Is possible create corner radius to accordion tabs?
DannyDAS!!!
Hi Peter,
I would like to know that how can i change the selected header text color?
thanks
http://forums.adobe.com/thread/425201
way to set selected header text color
dilip: rtfm
it’s all there
dilip,
The following should work:
<?xml version="1.0" encoding="utf-8"?> <mx:Application name="Accordion_getHeaderAt_setStyle_color_test" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="top" backgroundColor="white"> <mx:Script> <![CDATA[ import mx.controls.Button; import mx.events.FlexEvent; import mx.events.IndexChangedEvent; private function accordion_change(evt:IndexChangedEvent):void { accordion.getHeaderAt(evt.oldIndex).setStyle("color", "black"); accordion.getHeaderAt(evt.newIndex).setStyle("color", "haloSilver"); } private function accordion_creationComplete(evt:FlexEvent):void { accordion.getHeaderAt(accordion.selectedIndex).setStyle("color", "haloSilver"); } ]]> </mx:Script> <mx:Style> .accHeader { color: black; fillColors: haloSilver, haloSilver; fillAlphas: 1.0, 0.5; selectedFillColors: black, black; } </mx:Style> <mx:Accordion id="accordion" headerStyleName="accHeader" resizeToContent="true" width="100%" creationComplete="accordion_creationComplete(event);" change="accordion_change(event);"> <mx:VBox label="Red" backgroundColor="red" width="100%" height="200" /> <mx:VBox label="Orange" backgroundColor="haloOrange" width="100%" height="120" /> <mx:VBox label="Yellow" backgroundColor="yellow" width="100%" height="160" /> <mx:VBox label="Green" backgroundColor="haloGreen" width="100%" height="80" /> <mx:VBox label="Blue" backgroundColor="haloBlue" width="100%" height="140" /> </mx:Accordion> </mx:Application>Peter