开发者

How do I resize the dropdown of a combobox along with the combo box?

开发者 https://www.devze.com 2022-12-31 14:43 出处:网络
Background:     I am doing some UI work where I allow the user to programatically add and resize controls on a canvas.

Background:

    I am doing some UI work where I allow the user to programatically add and resize controls on a canvas.

Problem:

    When resizing a combo box through AS the dropdown stays at the same width as the first time it drops down. So user places combo box on the page, clicks the down arrow, sees t开发者_运维技巧he options, selects an option or clicks down arrow again to close, resizes the width of the drop down, clicks the down arrow. Now drop down is the same width as original. Have tried simple things like setting the width of the dropdown specifically and invalidating display list but it still doesn't work.

Example:

    Code Example pending


While trimming my code down to an example I solved my problem. A combobox has a dropdownWidth property. I was trying to set this myComboBox.dropdownWidth = newWidth, which doesn't work (not entirely sure why, didn't dig into the SDK). However if I change my code to myComboBox.dropdown.width = newWidth it actually goes to the dropdown element and re-sizes it directly which does work.


comboBox.dropdown.width did not work for me. I had to use

comboBox.dropdown.percentWidth = 100;

It seems to work without having to call invalidateSize()


In the ComboBox, overriding the set dataProvider and performing the following seemed to work, because the dataProvider field is bound to the collectionChange event.

ComboBox.calculatePreferredSizeFromData(count:int):Object

override public function set dataProvider(value:Object):void {
    super.dataProvider = value;

    var size:Object = calculatePreferredSizeFromData(dataProvider.length);

    this.dropdownWidth = size.width;
    this.dropdown.width = this.dropdownWidth;
    this.invalidateSize();
}
0

精彩评论

暂无评论...
验证码 换一张
取 消