Flex: заставить ComboBox динамически изменять размер, чтобы он всегда соответствовал его содержимому? - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть следующее поле со списком:

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

Но при изменении содержимого someArrayCollection поле со списком становится слишком маленьким:

enter image description here

Как сделать так, чтобы поле со списком автоматически изменяло размеры, чтобы оно соответствовало метке самого большого элемента?

Ответы [ 2 ]

4 голосов
/ 01 февраля 2011

Итак, проблема в том, что ComboBox не invalidateSize() после dataProvider отправляет событие COLLECTION_CHANGE.

Lame.

Это можно исправить, вызвав myComboBox.invalidateSize(), когда dataProvider отправляет COLLECTION_CHANGE.

0 голосов
/ 01 февраля 2011

По сути, вы просто зацикливаетесь на dataProvider, измеряете ширину метки каждого элемента и отслеживаете наибольшую метку.

Я как бы встроил это в Flextras AutoCompletComboBox . Существует свойство с именем expandDropDownToContent , которое расширяет раскрывающийся список, поэтому в нем нет полос прокрутки, но оно по сути не расширяет часть приглашения.

Spark DropDownList имеет свойство с именем typItem, которое выполняет нечто подобное. Странно, но в данный момент это свойство не определено в DropDownList .


12/23/3011 обновление

Так как это продолжает опускаться, я хотел прямо заявить. Когда MX / Halo ComboBox автоматически изменяет размеры, он делает это, основываясь только на начальных элементах, которые будут отображаться в раскрывающемся списке. Если вы не зацикливаете все элементы в dataProvider для определения правильного размера ComboBox / DropDown, то элементы могут быть обрезаны независимо от того, вызываете ли вы invalidateSize () или нет, когда элементы в dataProvider изменяются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...