更改菜单栏Flash Builder 4.6中顶级项的突出显示

时间:2013-04-11 08:50:49

标签: flex flash-builder highlight menubar

我已经受雇于灵活页面构建以及有关Flash构建器的三天学习我已经被尝试改变顶级项目在菜单栏中高亮显示的方式。目前它是默认值,因此物品在翻转时会将颜色更改为蓝色。

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

尝试通过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 个答案:

答案 0 :(得分:1)

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

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

要更改菜单栏的顶级背景颜色,您需要复制然后编辑默认外观。这可能看起来很吓人,但实际上很容易做到。 (如果您之前从未创建过自定义皮肤,请在此处查看我的答案,以帮助您入门:Add search icon inside spark TextInput in Flex

您可以在MXML中应用外观,或者因为您使用CSS,所以可以使用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>

保存并运行程序。然后根据需要调整颜色。