在基于Flex4的AIR程序中改变状态栏字体大小

在Flex3时代,要改变AIR程序的状态栏字体,可以使用修改CSS的方法:

 1<mx:Style>
 2    .boldRed {
 3        color: red;
 4        fontSize: 12;
 5        fontWeight: bold;
 6    }
 7
 8    WindowedApplication {
 9        statusTextStyleName: boldRed;
10    }
11</mx:Style>

但是,在Flex4中,这招不管用了,默认的spark组件采用了新的方法来定义皮肤,这直接导致你根本找不到statusTextStyleName属性。

幸运的是,spark提供了更好的方法。spark的Window或者WindowedApplication组件的默认皮肤都包含statusText这个“外观部件”,我们对它的属性进行设置即可。当然,我们也可以完全重写默认的skin,skin采用MXML写成,更好编辑。这个组件的路径在这里:

1[Flash Builder安装路径]\sdks\[SDK版本]\frameworks\projects\airspark\src\spark\skins\spark\  
 1<?xml version="1.0" encoding="utf-8"?>
 2<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
 3                       xmlns:s="library://ns.adobe.com/flex/spark"
 4                       xmlns:mx="library://ns.adobe.com/flex/mx"
 5                       applicationComplete="init()" status="测试">
 6    <fx:Style>
 7        @namespace s "library://ns.adobe.com/flex/spark";
 8        @namespace mx "library://ns.adobe.com/flex/mx";
 9        s|WindowedApplication
10        {
11            font-size: 12;
12            font-family:"Microsoft YaHei,SimSun";           
13        }
14        .errorTip
15        {
16            font-size: 12;
17        }
18    </fx:Style>
19    <fx:Script>
20        <![CDATA[
21            private function init():void
22            {
23                statusText.setStyle('fontSize', 12);
24            }
25        ]]>
26    </fx:Script>
27</s:WindowedApplication>

需要注意的是,如果把这招用在Window组件中,就必须在Window.open()执行之后再调用setStyle,否则将会导致运行时错误。至于原因么……自己想 ^_^