簡體   English   中英

Flex-有沒有辦法指定ComboBox的打開方向?

[英]Flex - Is there a way to specify what direction a ComboBox will open?

也許我應該對此做進一步的限定-有沒有一種方法可以指定ComboBox的打開方向,而無需復制和粘貼整個ComboBox類並在確定其打開方向的代碼中提取代碼...

我是我的特例-我需要它向上打開-總是。

更新:您不能通過子類化解決此問題,因為處理打開方向的函數是:

private function displayDropdown(show:Boolean, trigger:Event = null):void

那個壞男孩使用了大量的私有變量,而我的子類無法訪問...

如果您自己構建Menu對象,則只需設置菜單對象的x,y坐標即可將菜單放置在所需的任何位置。 您將需要計算這些坐標,但是無需對ComboBox進行子類化即可輕松實現。

我正在用PopUpButton做類似的事情; 您可能會發現使用PopUpButton更容易。 這是基於我當前項目中的真實代碼:

private function initMenu(): void {
    var m:Menu = new Menu();
    m.dataProvider = theMenuData;
    m.addEventListener(MenuEvent.ITEM_CLICK, menuClick);
    m.showRoot = false;
    // m.x = ... <-- probably don't need to tweak this.
    // m.y = ... <-- this is really the interesting one :-)
    theMenu.popUp = m;
}
<mx:PopUpButton id="theMenu" creationComplete="initMenu()" ... />

順便說一句,要使PopUpButton的行為更像我想要的那樣(無論在何處單擊,總是彈出,無論在哪里單擊),在MXML中設置openAlways = true都像一種魅力。

我對此表示懷疑-你需要繼承的控制(這不是什么大不了的事。)

也許您會把房地產弄得一團糟,以這種方式放置(例如擠到右下角)自然被強迫了?

我建議您查看這篇文章 是的,您確實必須獲取ComboBox代碼並進行修改,但至少現在您已經知道需要進行哪些修改。

這激怒了我。 我已經上傳了一個解決方案,它是一個簡單的Class,它擴展了PopUpButton並刪除了階段邊界檢測的邏輯,因為它無論如何都在50%的時間內失敗。 我的代碼僅允許您簡單地指定是向上還是向下打開菜單:

http://gist.github.com/505255

您可以設置MaxDropDownHeight,如果將其設置得足夠大,Windows將自動將方向設置為向上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM