The following example shows how you can set the accent color on the Spark Button control’s emphasized state in Flex 4 by setting the accentColor style and emphasized property.

The following example(s) require Flash Player 10 and the Adobe Flex 4 SDK. To download the Adobe Flash Builder 4 trial, see http://www.adobe.com/products/flex/. To download the latest nightly build of the Flex 4 SDK, see http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4.
For more information on getting started with Flex 4 and Flash Builder 4, see the official Adobe Flex Team blog.

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2010/04/05/setting-the-accent-color-on-the-spark-button-control-in-flex-4/ -->
<s:Application name="Spark_Button_accentColor_test"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:controlBarContent>
        <mx:Form>
            <mx:FormItem label="accentColor:">
                <mx:ColorPicker id="clrPckr" selectedColor="red" />
            </mx:FormItem>
            <mx:FormItem label="emphasized:">
                <s:CheckBox id="chckBx" selected="true" />
            </mx:FormItem>
        </mx:Form>
    </s:controlBarContent>
 
    <s:Button id="btn"
            label="Spark Button label"
            accentColor="{clrPckr.selectedColor}"
            emphasized="{chckBx.selected}"
            horizontalCenter="0" verticalCenter="0" />
 
</s:Application>

You can also set the accentColor style in an external .CSS file or <Style> block, as seen in the following example:

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2010/04/05/setting-the-accent-color-on-the-spark-button-control-in-flex-4/ -->
<s:Application name="Spark_Button_accentColor_test"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx">
 
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
 
        s|Button {
            accentColor: red;
        }
    </fx:Style>
 
    <s:Button id="btn"
            label="Spark Button label"
            emphasized="true"
            horizontalCenter="0" verticalCenter="0" />
 
</s:Application>

Or you can set the accentColor style using ActionScript, as seen in the following example:

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2010/04/05/setting-the-accent-color-on-the-spark-button-control-in-flex-4/ -->
<s:Application name="Spark_Button_accentColor_test"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:controlBarContent>
        <mx:Form>
            <mx:FormItem label="accentColor:">
                <mx:ColorPicker id="clrPckr"
                        change="styleThatButton(event);"/>
            </mx:FormItem>
            <mx:FormItem label="emphasized:">
                <s:CheckBox id="chckBx"
                        change="styleThatButton(event);"/>
            </mx:FormItem>
        </mx:Form>
    </s:controlBarContent>
 
    <fx:Script>
        <![CDATA[
            protected function styleThatButton(evt:Event):void {
                btn.setStyle("accentColor", clrPckr.selectedColor);
                btn.emphasized = chckBx.selected;
            }
        ]]>
    </fx:Script>
 
    <s:Button id="btn"
            label="Spark Button label"
            horizontalCenter="0" verticalCenter="0" />
 
</s:Application>

This entry is based on a beta version of the Flex 4 SDK and therefore is very likely to change as development of the Flex SDK continues. The API can (and will) change causing examples to possibly not compile in newer versions of the Flex 4 SDK.

 
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 Setting the accent color on the Spark Button control in Flex 4

  1. Igor Borodin says:

    Hello Peter,

    I have run into one strange limitation.
    If I use default skin the ‘accentColor’ attribute works. But if I specify custom skin the ‘accentColor’ has no effect; even if I don’t change a single line in the default skin and simply add ‘skinClass’, the effect is gone.
    Is it expected behavior?

    Thanks,
    Igor

    • Peter deHaan says:

      @Igor Borodin,

      Ah, I think I see what the issue is. The Spark Button control with emphasized=true uses the spark.skins.spark.DefaultButtonSkin class instead of the spark.skins.spark.ButtonSkin class.

      <?xml version="1.0" encoding="utf-8"?>
      <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                     xmlns:s="library://ns.adobe.com/flex/spark"
                     xmlns:mx="library://ns.adobe.com/flex/mx">
          <s:layout>
              <s:VerticalLayout horizontalAlign="center" verticalAlign="middle" />
          </s:layout>
       
          <s:Button id="btn1"
                    label="Spark Button w/ accentColor"
                    accentColor="purple"
                    emphasized="true"
                    click="btn1.label = btn1.getStyle('skinClass').toString();"/>
       
          <s:Button id="btn2"
                    label="Spark Button w/ accentColor &amp; default skin"
                    accentColor="purple"
                    emphasized="true"
                    skinClass="spark.skins.spark.DefaultButtonSkin" />
       
          <s:Button id="btn3"
                    label="Spark Button w/ accentColor &amp; custom skin"
                    accentColor="purple"
                    emphasized="true"
                    skinClass="CustomBtnSkin" />
       
          <s:Button click="btn2.setStyle('accentColor', 'red'); btn2.emphasized = true;" />
       
      </s:Application>

      And my CustomBtnSkin.mxml file is a copy/paste of the DefaultButtonSkin.mxml skin.

      Peter

      • Igor Borodin says:

        Thank you for the clarification, Peter.
        This accentColor adds indeed very nice subtle color.
        Igor

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree