Как выбрать, какой компонент получает полосы прокрутки во вложенных гибких контейнерах? - PullRequest
0 голосов
/ 19 августа 2011

У меня есть несколько вложенных VBox-ов в flex, и я хочу, чтобы один из них получил полосы прокрутки, если общее содержимое больше высоты окна.

Однако, когда я увеличиваю контейнер, он невообще не получают полосы прокрутки (политика вертикальной прокрутки - АВТО), и внешний контейнер растягивается за нижнюю часть экрана, в результате чего все приложение получает полосы прокрутки.

 ____________
|            |
| Container  |
|            |
|____________|
|            |
| Scrolling  |
| Container  |
|____________|
|            |
| Container  |
|____________|

Как обеспечить, чтобы только внутренний (прокручиваемый) контейнер получал полосы прокрутки при увеличении размера нижнего контейнера?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Короче - установите minHeight свойство для вашего контейнера прокрутки, скажем, 100:

<mx:VBox height="100%">
    <mx:Something/>

    <mx:VBox minHeight="100" height="100%">
        <!-- here will be scrollbars, if needed -->
        <mx:Something/>         
    </mx:VBox>

    <mx:Something/>
</mx:VBox>

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

1 голос
/ 19 августа 2011

Поместите VBox вы хотите получить полосы прокрутки в Canvas:

<mx:VBox ... />

<mx:Canvas width="100%" height="100%">
    <mx:VBox left="0" right="0" top="0" bottom="0"> ... </mx:VBox>
</mx:Canvas>

<mx:VBox ... />
...