2012-03-19 79 views
0

如何在运行时更改选项卡导航器控件中选项卡的边框颜色?我试图通过它的id“mytab”来访问它并更新它的风格。在flex中运行时更改选项卡边框颜色

this.mytab.setStyle("bordercolor","red");

TabNavigator有多个选项卡,我必须根据某些逻辑更改少数选项卡的样式。 StyleDeclaration适用于选项卡导航器下的所有选项卡,但如何使用基于组件的CSSStyleDeclaration? 这种方法的唯一不足之处在于Style不能针对单个选项卡进行更改。

+0

您可以张贴在这里的MXML一部分? – Triode 2012-03-19 15:24:54

回答

2

直接在TabNavigator上设置样式将不起作用。您必须在TabNavigator上设置tabStyleName属性,然后创建一个具有相同名称的样式,该样式将应用于您的选项卡。这与my answer to your other question的策略是一样的;只需设置borderColor风格。


如果你真的需要在运行时动态设置样式,你可以检索CSSStyleDeclaration的选项卡,并设置它像这样:

<mx:Style> 
    .tabStyle { 
     /* define an empty style so there is something to get using getStyleDeclaration */ 
    } 
    </mx:Style> 

    <mx:Script> 
    <![CDATA[ 
     protected function changeStyle(event:MouseEvent):void 
     { 
     var cssStyle:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".tabStyle"); 
     cssStyle.setStyle("borderColor", "red"); 
     } 
    ]]> 
    </mx:Script> 

    <mx:TabNavigator id="mytab" width="200" height="200" tabStyleName="tabStyle"> 
    <mx:Canvas label="apple" width="100%" height="100%"> 
    </mx:Canvas> 
    <mx:Canvas label="orange" width="100%" height="100%"> 
    </mx:Canvas> 
    <mx:Canvas label="banana" width="100%" height="100%"> 
    </mx:Canvas> 
    </mx:TabNavigator> 

    <mx:Button x="10" y="218" label="Change Style!" click="changeStyle(event)"/> 
+0

@Wesely Petrowski谢谢。你是绝对正确的。对于标签导航器,我必须先设置CSSStyleDeclaration。 – 2012-03-19 18:15:48

+0

@Wesely Petrowski是否可以在选项卡导航器中获取特定选项卡的样式声明?它可能基于组件ID? – 2012-03-19 18:32:52