Авторазмер и позиционирование во Flex - PullRequest
0 голосов
/ 04 января 2010

Я работаю над гибким приложением, которое использует шаблоны XML для динамического создания объектов DisplayObject.Эти шаблоны определяют различные макеты, которые можно использовать для каждой страницы содержимого в приложении (например, 2 столбца, 3 столбца и т. Д.).Администратор может выбрать один из них и заполнить каждую область их содержимым.

Шаблоны добавляют один из 3 типов DisplayObject - HBox, VBox или третий компонент - LibraryContentContainer (компонент mxml, который определен как частьприложения), который фактически является элементом canvas с TextArea внутри.

Проблема, которую я получаю, заключается в том, что мне нужно, чтобы каждая из этих областей автоматически изменяла размеры в соответствии с длиной содержимого, но неКажется, в состоянии найти эффективный способ сделать это.

В LibraryContentContainer, когда установлено значение TextArea, я вызываю .validateNow () для LibraryContentContainer.Затем я устанавливаю свойство height в TextArea и LibraryContentContainer, чтобы оно соответствовало textHeight свойству TextArea.

В следующем примере this - это LibraryContentContainer, viewer - это TextArea, и свойство value TextArea связано с этим .__ Value. v - это переменная, содержащая содержимое для текстовой области

this.__Value = v;
this.validateNow();

this.viewer.height = this.viewer.textHeight;
this.height = this.viewer.height; 

Это работает до такой степени, что TextArea увеличивается или уменьшается в зависимости от длины содержимого, но все равно не очень хорошо -иногда все еще существуют вертикальные полосы прокрутки, даже если размер TextArea вырос.

У кого-нибудь есть идеи?

Спасибо

Адам

1 Ответ

0 голосов
/ 04 января 2010

Я думаю, что проблема заключается не в ваших динамически добавляемых компонентах, а в компоненте, к которому они добавляются. Как определяется высота этого компонента? Если для этого контейнера вы выключили verticalScrollPolicy и horizontalScrollPolicy, исчезнут ли полосы прокрутки? Если это так, то вам нужно посмотреть, каков размер этого компонента, а не ваш hbox, vbox или что бы вы ни добавляли.

...