Изменение стиля отдельной вкладки в flex - PullRequest
1 голос
/ 21 марта 2012

Я нашел способ изменить стиль вкладок во время выполнения с помощью следующей логики:

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

Но здесь класс .MyTabs применим ко всем вкладкам между первой и последней вкладками. Согласно getStyleDeclaration javadoc, он принимает только «селектор класса» и «селектор типа», а не селектор идентификатора.

Как изменить стиль отдельной вкладки во время выполнения?

Ответы [ 3 ]

2 голосов
/ 21 марта 2012
(tabNavigator.getTabAt(index) as Button).setStyle("borderColor", 0xFF0000);

Это решит проблему, вы можете установить свой собственный цвет в качестве значения параметра.

1 голос
/ 21 марта 2012

Другой пользователь указал на метод, который я как-то пропустил, позволяя вам получить доступ к вкладке как к кнопке и стилизовать ее оттуда.

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

Tab расширяет Button, поэтому могут быть некоторые вещи, для которых вам понадобится приведенное ниже решение, но для базовых стилей этого должно быть достаточно.


@ Ответ Себастьяна работает на TabBar, которого, как я знаю, у вас нет, поскольку это третий идентичный вопрос, который вы задали Чтобы стилизовать вкладки в TabNavigator, вам необходим доступ к внутренней вкладке.

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

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

Теперь вы можете свободно устанавливать стили, как показано в ответе Себастьяна.

1 голос
/ 21 марта 2012

Вы можете вызвать setStyle на отдельных вкладках, которые вы можете получить, вызвав TabBar.getChildAt (x) . Проверьте следующую ссылку , которая иллюстрирует, как выполнить задачу, которую вы пытаетесь выполнить. Вы также можете проверить эту ссылку

 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);
        }
    }
...