2013-04-11 41 views
1

我已经被雇佣来帮助flex页面构建和三天学习flash构建器我已经给予了一次尝试,以改变顶级项目在高级一个菜单栏。目前它是默认设置,因此当项目恢复时,这些项目会将其颜色更改为蓝色。更改菜单栏中顶级项目的突出显示Flash Builder 4.6

我想要做的是在用鼠标重新覆盖文本时将文本加下划线,而不是将其颜色更改为蓝色。

试图通过CSS改变它,但唯一的改变是子菜单项,而不是最高级别:

守则负责菜单栏主应用程序保存在一个使用BorderContainer:

<mx:MenuBar id="mbPrimaryMenu" height="40" labelField="@label" 
dataProvider="{primaryMenuItems}" change="mbPrimaryMenuChangeHandler(event)"/> 

CSS我认为是整个菜单栏(包括顶级元素)的负责格式:

#mbPrimaryMenu { 
    chromeColor: #333333; 
    borderVisible: true; 
    borderColor: #000000; 
    borderAlpha: 0; 
    borderStyle: solid; 
    borderWeight: 2; 
    color: #FFFFFF; 
    contentBackgroundColor: #333333; 
    contentBackgroundAlpha: 0.8; 
    rollOverColor: #AAAAAA; 
    itemRollOverColor: #FF0000; 

我该如何做? CSS,MenuBarItemRenderer? 当鼠标滚过其中一个元素时,我在哪里寻找菜单栏强调其元素的方式?

回答

1

要使菜单栏的第一级文本带下划线,只需设置添加MXML组件的textDecoration属性。即:

<mx:MenuBar width="100%" height="20" textDecoration="underline" dataProvider="{myData}"/> 

要更改菜单栏的顶级背景颜色,您需要复制然后编辑默认皮肤。这可能看起来很吓人,但实际上很容易做到。 (如果你从来没有创建一个自定义皮肤之前,请参阅我的答案在这里,让你开始:Add search icon inside spark TextInput in Flex

您可以在MXML应用皮肤,或由于您使用CSS,你可以使用应用它们在CSS:

mx|MenuBar { 
backgroundSkin: ClassReference("com.mycompany.views.components.skins.MyButtonSkin"); 
    /* changes background color at top level*/ 
itemSkin: ClassReference("com.mycompany.views.components.skins.MyMenuItemSkin"); 
    /* changes background HOVER color at top level of menu bar */ 
} 

您可以从默认外观MenuItemSkin的ButtonSkin和MyMenuItemSkin(使用您自己的名称)的默认外观创建外观MyButtonSkin(使用您自己的名称)。但是,您只需要使用MyMenuItemSkin更改菜单栏顶层的悬停颜色。

在您的皮肤文件夹中有皮肤MyMenuItemSkin后,编辑包含填充的第1层部分。在这里,你可以做这样的事情:

<!-- layer 1: fill; effects main level of menubar only --> 
<s:Rect left="0" right="0" top="0" bottom="0" excludeFrom="up,disabled" > 
    <s:fill> 
     <s:LinearGradient rotation="90"> 
      <s:GradientEntry color.over="0xFF0000" 
          color.down="0x00FF00" 
          alpha.over="0.8" alpha.down="1" 
          /> 
      <s:GradientEntry color.over="0xAA0000" 
          color.down="0x00AA00" 
          alpha.over="0.8" alpha.down="1" 
          /> 
     </s:LinearGradient> 
    </s:fill> 
</s:Rect> 

保存并运行程序。然后按你所希望的方式调色。

+0

有没有办法只设置顶级菜单按钮的文本颜色,而不是菜单项?我在黑色背景上有菜单栏,但菜单打开时背景是白色的,所以我想顶层文本是白色的,但菜单项是黑色的。设置颜色样式为菜单栏和菜单项设置颜色。 – 2014-01-02 02:51:46

+0

@ 1.21千兆瓦,是的。在CSS代码中,使用'mx | MenuBar {color:#FFFFFF}'。这会将菜单栏的顶级字体设置为白色。要设置子菜单项颜色,请使用CSS设置'mx | List {color:#000000}'。 'mx | List'控制子菜单项(使用它来设置禁用的颜色,rollOverColor等)。 – ggkmath 2014-01-28 23:03:31