在flex中更改单个选项卡样式

时间:2012-03-21 13:24:38

标签: flex flex3 flash-builder

我找到了一种在运行时使用以下逻辑更改标签样式的方法:

var cssStyle:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".MyTabs");
  cssStyle.setStyle("borderColor", "red");

但是这里“。MyTabs”类适用于第一个和最后一个选项卡之间的所有选项卡。根据getStyleDeclaration javadoc,它只接受“类选择器”和“类型选择器”而不是id选择器。

如何在运行时更改单个标签样式?

3 个答案:

答案 0 :(得分:2)

(tabNavigator.getTabAt(index) as Button).setStyle("borderColor", 0xFF0000);

这将解决问题,您可以将自己的颜色设置为值参数。

答案 1 :(得分:1)

您可以在单个选项卡上调用 setStyle ,您可以通过调用 TabBar.getChildAt(x)来获取。请检查以下link,其中说明了如何完成您尝试执行的任务。您还可以查看此link

 private function tabBar_creationComplete():void {
        var colorArr:Array = ["red", "haloOrange", "yellow", "haloGreen", "haloBlue"];
        var color:String;
        var tab:Tab;
        var idx:uint;
        var len:uint = tabBar.dataProvider.length;

        for (idx = 0; idx < len; idx++) {
            var i:int = idx % colorArr.length;
            color = colorArr[i];
            tab = Tab(tabBar.getChildAt(idx));
            tab.setStyle("fillColors", [color, "white"]);
            tab.setStyle("fillAlphas", [1.0, 1.0]);
            tab.setStyle("backgroundColor", color);
        }
    }

答案 2 :(得分:1)

另一位用户指出了一种我曾经错过的方法,允许你以Tab键作为Buttom访问它并从那里设置样式。

var t:Button = theTabs.getTabAt(index);

Tab扩展了Button,因此可能需要以下解决方案,但对于基本样式,这应该足够了。


@ Sebastian的答案适用于TabBar,我知道你没有,因为这是你提出的第三个相同的问题。要在TabNavigator上设置选项卡的样式,您需要访问内部TabBar。

//this import may not auto-complete for you
import mx.controls.tabBarClasses.Tab;

var t:Tab = theTabs.mx_internal::getTabBar().getChildAt(index);

现在您可以随意设置样式,如Sebastian的回答所示。