`
webcode
  • 浏览: 5910931 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

减少Menu分割线的间距

 
阅读更多

之前看到社区中有介绍怎样灵活使用右键菜单的文章。现在积累下来右键菜单的方式还是比较多的,让我们来初步了解一下:

1. 使用flash自带的右键菜单,通过ContextMenu来设置,这是twaver最早右键菜单的解决方法,但这种方式有一个不太好的地方是自带上了flash的信息,而且无法删除,因此很不方便。

2. 使用Menu,通过左键的方式来触发弹出Menu项。这个方式还是比较能够接受的,对于flash也没有版本的要求。

3. 使用Flash Player 11.2的新功能实现右键菜单,这种方式虽然好,但是需要使用比较高的flash版本,而我们项目中很多用户使用的还是老的版本,领导觉得这种方法不太适合我们。上面的三种方式,我们最终选择了第二种。在实际使用过程中总是有这样那样的问题。我今天就碰到了一个这样的问题。我使用的是第二种方法:通过menu来实现右键菜单。由于菜单项比较多,而且实际应用中也还需要对菜单项进行分类、分层。

这种效果一般来说已经够用了,但是领导觉得分割线和上下文字之间的间距太大了,需要改小一点,于是上网查了资料,发现确实有一个参数能控制:variableRowHeight。这里有详细的使用例子:Reducing the vertical space around a separator in a Flex PopUpButton control’s pop up menu by enabling variable row heights

赶紧试试我的菜单效果,于是给menu设置了variableRowHeight=true,但效果却不是那么尽如人意:

一级菜单还行,二级菜单上的分割线样式还是原来那样,没变,这会是什么原因呢?继续Google发现基本都是说设置了这个属性值就可以了。难道还是Adobe的bug?算了,还是自己看源码吧:

mx_internal function openSubMenu(row:IListItemRenderer):void
{
supposedToLoseFocus = true;

var r:Menu = getRootMenu();
var menu:Menu;

// check to see if the menu exists, if not create it
if (!IMenuItemRenderer(row).menu)
{
menu = new Menu();
menu.parentMenu = this;
menu.owner = this;
menu.showRoot = showRoot;
menu.dataDescriptor = r.dataDescriptor;
menu.styleName = r;
menu.labelField = r.labelField;
menu.labelFunction = r.labelFunction;
menu.iconField = r.iconField;
menu.iconFunction = r.iconFunction;
menu.itemRenderer = r.itemRenderer;
menu.rowHeight = r.rowHeight;
menu.scaleY = r.scaleY;
menu.scaleX = r.scaleX;

// if there's data and it has children then add the items
if (row.data &&
_dataDescriptor.isBranch(row.data) &&
_dataDescriptor.hasChildren(row.data))
{
menu.dataProvider = _dataDescriptor.getChildren(row.data);
}
menu.sourceMenuBar = sourceMenuBar;
menu.sourceMenuBarItem = sourceMenuBarItem;

IMenuItemRenderer(row).menu = menu;
PopUpManager.addPopUp(menu, r, false);
}

看来是二级菜单上没有copy主菜单variableRowHeight的属性值,因此还是自己定义一个itemRenderer,将属性值设置到itemrenderer里面:

public class CustomMenuItemRenderer extends MenuItemRenderer {
public function CustomMenuItemRenderer() {
}
override protected function measure():void {
super.measure();
(this.owner as Menu).variableRowHeight = true;
}
}

然后通过menu.itemRenderer = new ClassFactory(CustomMenuItemRenderer);设置上自定义的这个renderer,运行看看效果:

终于达到了我们预期效果了,最后给大家分享一下源码:见原文下方

分享到:
评论

相关推荐

    android利用xml实现分割线

    因为没有美工, 所以只能自己动手了。...在drawable文件夹里用 shape line 或 rectangle 先画线 方法2:在drawable里面用shape新建一个xml 然后在 layout 里的布局文件里引用 这种方法 可以 多处引用同一个

    android menu菜单距中显示

    android menu菜单距中显示

    用mainmenu做的能够修改字体的菜单

    用mainmenu做的能够修改字体的菜单,通过文本框输入所要修改的文字的内容,通过菜单栏修改字体的样式,大小以及风格。仅供参考

    Access Menu By Name(TCL)

    Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access ...

    ICONMENU iconmenu

    icon menu 菜单 重绘icon menu 菜单 重绘

    iStat Menu 6.0.0 含注册码

    iStat Menu 6.0含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,

    StrutsMenu使用笔记

    StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记StrutsMenu使用笔记

    Win10开始菜单修复工具Windows 10 Start Menu TroubleShooter下载

    Start Menu does not open or not working in Windows 10 Win10开始菜单修复工具Windows 10 Start Menu TroubleShooter下载 这个微软官方Win10开始菜单修复工具是一个单文件的大小只有398KB的小工具,文件名为start...

    XML Menu

    在HV Menu基础上,改进成读取xml文件的...)" background="" height="20" width="68"></menu> </menu> <menu name="收藏夹" link="" background="" height="20" width="68"> <menu name="Google" link=...

    menu 收集menu 收集menu 收集

    menu 收集menu 收集menu 收集

    main_menu.xml菜单汉化文件

    MySQLWorkbench 菜单汉化文件 main_menu.xml

    menu.c32.zip

    USB安装EXSi出错,menu.c32 not a com32r image 不能进入安装界面。 提供提取的menu.c32 下载下来覆盖U盘根目录源文件 EXSi6.7测试可以用

    cssmenu 多种Menu样式

    cssmenu 多种Menu样式 cssmenu 多种Menu样式 cssmenu 多种Menu样式

    asp.net 菜单 menu

    menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000;width:150px; height:30px; text-align:center; color:#fff; border-bottom:1px solid #FFF; background:#0069A3; line-...

    jsmind.menu.js

    jsmind.menu.js(jsmind的右键菜单)

    ASPnetMenu.dll文件

    利用 ASP.NET Menu 控件,可以开发 ASP.NET 网页的静态和动态显示菜单。Menu 控件具有两种显示模式:静态模式和动态模式。静态显示意味着 Menu 控件始终是完全展开的。整个结构都是可视的,用户可以单击任何部位。在...

    Windows 10 Start menu troubleshooter

    该工具是用于修复win10菜单栏,鼠标点击无反应的情况。 Windows 10 Start menu troubleshooter

    android 另类menu菜单提示

    android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示

    windows7引导ubuntu的menu.lst

    windows7利用grub4dos引导ubuntu的menu.lst文件

Global site tag (gtag.js) - Google Analytics