我在其中创建了一个TabNavigator
,其中包含一堆NavigatorContent
,并希望只对选项卡本身的按钮进行设置。所以我添加了一个skinClass
,但是在文档中看起来没有专门针对按钮的皮肤部分。
我是否必须设定mx:TabNavigator
本身的样式才能完成此操作?我希望不会,因为我不知道如何设置mx
组件的样式,并且更适合样式spark
。
我没想过的其他任何替代方案?
答案 0 :(得分:1)
由于TabNavigator是mx组件,因此您必须以旧方式设置样式。您可以通过设置'tabStyleName'样式来设置按钮样式,即:
TabNavigator{
tabStyleName: "myTabButton";
}
.myTabButton{
skin: ClassReference("com.yournamespace.skins.TabButtonSkin");
}
您必须以旧方式创建皮肤,您可能需要查看mx.skins.halo.Button类作为示例,或者您可以使用degrafa或者您可以使用png。
注意,如果您愿意,也可以单独设置firstTabStyleName或lastTabStyleName。
程序化皮肤示例: http://www.davidflatley.com/2007/12/17/programmatic-button-skins-in-flex-3/
degrafa示例: http://styleanderror.net/2010/02/creating-animated-programmatic-button-skins-in-degrafa/
答案 1 :(得分:1)
您可以编写自己的按钮皮肤或使用此处http://www.wabysabi.com/flex/enhancedbuttonskin/ 名为EnhancedButtonSkin.as(右键单击,查看源)。 然后声明TabNavigator组件并指定其tabStyleName。
<mx:TabNavigator y="0" height="100%" right="0" left="0" id="navigator" tabStyleName="tab">
现在是css:
<fx:Style>
.tab
{
upSkin:ClassReference('com.EnhancedButtonSkin');
overSkin:ClassReference('com.EnhancedButtonSkin');
downSkin:ClassReference('com.EnhancedButtonSkin');
disabledSkin:ClassReference('com.EnhancedButtonSkin');
selectedUpSkin:ClassReference('com.EnhancedButtonSkin');
selectedOverSkin:ClassReference('com.EnhancedButtonSkin');
selectedDownSkin:ClassReference('com.EnhancedButtonSkin');
selectedDisabledSkin:ClassReference('com.EnhancedButtonSkin');
cornerRadii: 5, 5, 0, 0;
borderColors: #CC0000, #000000;
overBorderColors: #003399, #003399;
selectedBorderColors: #666666, #FFFFFF;
borderThickness: 1;
borderAlpha: 1;
fillColors: #CC3300, #F98900;
fillAlphas: 1, 1;
fillColorRatios: 0, 255;
overFillColors: #999999, #FFFFFF;
overFillAlphas: 1, 1;
overFillColorRatios: 0, 255;
selectedFillColors: #999999, #FFFFFF;
selectedFillAlphas: 1, 1;
selectedFillColorRatios: 111, 255;
highlightAlphas: 0, 0;
color: #000000;
textRollOverColor: #000000;
fontSize: 13;
}
</fx:Style>
此css将显示: i.imgur.com/4HwD3.png
雷米