Flex:让ComboBox动态调整大小以使其始终适合其内容?

时间:2011-01-31 22:34:20

标签: flex combobox

我有一个这样的组合框:

<mx:ComboBox dataProvider="{someArrayCollection}" />

但是当someArrayCollection的内容发生变化时,它会使组合框太小:

enter image description here

如何欺骗组合框自动调整大小以适应最大项目的标签?

2 个答案:

答案 0 :(得分:4)

问题是ComboBoxinvalidateSize()发送dataProvider事件后COLLECTION_CHANGE没有myComboBox.invalidateSize()

拉​​梅。

dataProvider发送COLLECTION_CHANGE时,可以通过调用{{1}}来解决此问题。

答案 1 :(得分:-1)

基本上,您只需遍历dataProvider,测量每个项目标签的宽度,并跟踪最大的标签。

我把它构建到Flextras AutoCompletComboBox中。有一个名为expandDropDownToContent的属性可以扩展下拉列表,因此它没有滚动条,但它本身不会扩展提示符部分。

Spark DropDownList有一个名为typicalItem的属性,它执行类似的操作。奇怪的是,此时似乎没有在DropDownList中定义属性。


12/23/3011更新

由于这种情况不断下降,我想明确说明。当MX / Halo ComboBox自动调整大小时,它仅基于下拉列表中显示的初始项目进行调整。如果不循环遍历dataProvider中的所有项以确定ComboBox / DropDown的正确大小,则无论是否在dataProvider中的项发生更改时调用invalidateSize(),项都可能会被截断。