<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術(shù)

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    減少Menu分割線的間距

    Posted on 2012-06-20 11:49 TWaver 閱讀(1239) 評論(0)  編輯  收藏
         之前看到社區(qū)中有介紹怎樣靈活使用右鍵菜單的文章。現(xiàn)在積累下來右鍵菜單的方式還是比較多的,讓我們來初步了解一下:
    1.  使用flash自帶的右鍵菜單,通過ContextMenu來設(shè)置,這是twaver最早右鍵菜單的解決方法,但這種方式有一個不太好的地方是自帶上了flash的信息,而且無法刪除,因此很不方便。
    2.  使用Menu,通過左鍵的方式來觸發(fā)彈出Menu項。這個方式還是比較能夠接受的,對于flash也沒有版本的要求。
    3.  使用Flash Player 11.2的新功能實現(xiàn)右鍵菜單,這種方式雖然好,但是需要使用比較高的flash版本,而我們項目中很多用戶使用的還是老的版本,領(lǐng)導(dǎo)覺得這種方法不太適合我們。
         
        上面的三種方式,我們最終選擇了第二種。在實際使用過程中總是有這樣那樣的問題。我今天就碰到了一個這樣的問題。我使用的是第二種方法:通過menu來實現(xiàn)右鍵菜單。由于菜單項比較多,而且實際應(yīng)用中也還需要對菜單項進(jìn)行分類、分層。



          這種效果一般來說已經(jīng)夠用了,但是領(lǐng)導(dǎo)覺得分割線和上下文字之間的間距太大了,需要改小一點,于是上網(wǎng)查了資料,發(fā)現(xiàn)確實有一個參數(shù)能控制:variableRowHeight。這里有詳細(xì)的使用例子:Reducing the vertical space around a separator in a Flex PopUpButton control’s pop up menu by enabling variable row heights



          趕緊試試我的菜單效果,于是給menu設(shè)置了variableRowHeight=true,但效果卻不是那么盡如人意:



          一級菜單還行,二級菜單上的分割線樣式還是原來那樣,沒變,這會是什么原因呢?繼續(xù)Google發(fā)現(xiàn)基本都是說設(shè)置了這個屬性值就可以了。難道還是Adobe的bug?算了,還是自己看源碼吧:

     1 
     2 mx_internal function openSubMenu(row:IListItemRenderer):void
     3 {
     4 supposedToLoseFocus = true;
     5 
     6 var r:Menu = getRootMenu();
     7 var menu:Menu;
     8 
     9 // check to see if the menu exists, if not create it
    10 if (!IMenuItemRenderer(row).menu)
    11 {
    12 menu = new Menu();
    13 menu.parentMenu = this;
    14 menu.owner = this;
    15 menu.showRoot = showRoot;
    16 menu.dataDescriptor = r.dataDescriptor;
    17 menu.styleName = r;
    18 menu.labelField = r.labelField;
    19 menu.labelFunction = r.labelFunction;
    20 menu.iconField = r.iconField;
    21 menu.iconFunction = r.iconFunction;
    22 menu.itemRenderer = r.itemRenderer;
    23 menu.rowHeight = r.rowHeight;
    24 menu.scaleY = r.scaleY;
    25 menu.scaleX = r.scaleX;
    26 
    27 // if there's data and it has children then add the items
    28 if (row.data &amp;amp;&amp;amp;
    29 _dataDescriptor.isBranch(row.data) &amp;amp;&amp;amp;
    30 _dataDescriptor.hasChildren(row.data))
    31 {
    32 menu.dataProvider = _dataDescriptor.getChildren(row.data);
    33 }
    34 menu.sourceMenuBar = sourceMenuBar;
    35 menu.sourceMenuBarItem = sourceMenuBarItem;
    36 
    37 IMenuItemRenderer(row).menu = menu;
    38 PopUpManager.addPopUp(menu, r, false);
    39 }
    40 
     
         看來是二級菜單上沒有copy主菜單variableRowHeight的屬性值,因此還是自己定義一個itemRenderer,將屬性值設(shè)置到itemrenderer里面:

    1 public class CustomMenuItemRenderer extends MenuItemRenderer {
    2 public function CustomMenuItemRenderer() {
    3 }
    4 override protected function measure():void {
    5 super.measure();
    6 (this.owner as Menu).variableRowHeight = true;
    7 }
    8 }

          然后通過menu.itemRenderer = new ClassFactory(CustomMenuItemRenderer);設(shè)置上自定義的這個renderer,運行看看效果:



          終于達(dá)到了我們預(yù)期效果了,最后給大家分享一下源碼:見原文最下方

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲欧洲日韩国产综合在线二区| 国产成人亚洲综合无码精品| 又黄又爽又成人免费视频| 91精品全国免费观看青青| 一出一进一爽一粗一大视频免费的| 亚洲A∨无码无在线观看| 久久亚洲国产午夜精品理论片| 性生交片免费无码看人| 国产在线观看免费观看不卡| 国产成人免费网站| 毛色毛片免费观看| 全免费a级毛片免费看无码| 日本免费人成黄页在线观看视频 | 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲乱码国产乱码精华| 91亚洲视频在线观看| 亚洲最大成人网色香蕉| 久久综合久久综合亚洲| 亚洲Av无码国产一区二区| 羞羞漫画页面免费入口欢迎你| 亚洲高清不卡视频| 亚洲一区在线视频观看| 中文字幕无码精品亚洲资源网久久 | 无码一区二区三区免费| 久久久久国产精品免费网站| 91av免费观看| 一二三四影视在线看片免费 | 拍拍拍无挡免费视频网站| 成人性生交大片免费看中文| 2021在线永久免费视频| 韩国二级毛片免费播放| 亚洲国产av一区二区三区| 国产亚洲av片在线观看16女人 | 精品免费人成视频app| 国语成本人片免费av无码 | 亚洲国产精品成人综合色在线| 亚洲一二成人精品区| 亚洲国产成人精品激情| 美景之屋4在线未删减免费| 青青操视频在线免费观看| 8x8x华人永久免费视频|