2014-09-25 5 views
0

diagram of layout problemFlex: получение полосы прокрутки на пульте управления, я хочу, и только в видимой области

Flex полоса прокрутки дает мне очень трудное время. Я хочу точно контролировать, в каких ящиках они появляются, но после частых попыток случайных вещей мое лучшее решение (см. Ниже) кажется немного клочковым и ненадежным. Если я заставляю полосу прокрутки появляться, (* ScrollPolicy = "on"), полоса прокрутки отключается, поскольку она охватывает весь размер поля, даже если это выходит за пределы видимой области.

У меня есть эта коробка в верхней части страницы, которая бежит сбоку от этого экрана, и это нормально - пусть это бежит со стороны и не дает ей полосу прокрутки. Но у меня есть эта другая коробка, которая бежит сбоку, что тоже приемлемо, , но Я хочу, чтобы полосы прокрутки служили этому региону и только в этом регионе и Я хочу, чтобы эти полосы прокрутки появлялись в видимой области. То есть, я не хочу, чтобы перемещать горизонтальную полосу прокрутки, чтобы она позволяла мне видеть вертикальную полосу прокрутки.


Теперь лучший, что я мог бы сделать это следующим образом: я нашел родитель главной коробки вы видите в моей схеме (которая на самом деле пра-пра-дедушка), который никогда не становится больше, чем видимая область, который является mx:Canvas. Затем я принудительно увеличиваю размер родителя ящика, содержащего мои вещи, до размера родителя mx:Canvas, который затем вызывает появление полос прокрутки там, где я хочу. Итак, это что-то вроде:

<mx:Canvas id="main_canvas" width="100%" height="100%"> 

много других тегов, которые родители

<mx:Box width="100%" height="100%" maxHeight="{main_canvas.height}" maxWidth="{main_canvas.width}"> <!--box containing the box that should show scroll bars--> 
    <mx:Box width="100%" height="100%"> <!--box that should show scroll bars--> 

остальные теги

Приведенные выше теги являются абстракцией, кстати. Из-за огромного количества экспериментов, которые я проводил, пытаясь получить полосы прокрутки, где я их хочу, существует очень высокая иерархия mx:*Box es, mx:Canvas es и даже mx:VDividedBox.

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

Я использую 3,5 SDK.

+0

Спасибо, ребята, но у меня уже есть значок Tumbleweed :) Но если кто-то не в порядке с моим вопросом, я открыт для предложений. Я даже не стал бы вето редактировать. – Opux

ответ

0

В конце концов, лучшее, что я мог сделать компресс, что я хотел иметь полосы прокрутки в качестве mx:Canvas, а затем установить его maxWidth к родительским компонента width, которая ограничена по ширине, я хочу, и, наконец, положить mx:Box внутри mx:Canvas. По крайней мере, похоже, что это работает в большинстве случаев, когда элементы управления вертикально сложены, и я хочу, чтобы горизонтальная полоса прокрутки охватывала всю ширину этого mx:Canvas. Обычно этого было достаточно, и почему-то проблема вертикальной полосы прокрутки сортировалась, но на пару случайных событий мне пришлось прибегнуть к Flex: getting the height of a collection of controls, чтобы вычислить maxHeight некоторых элементов управления дочерними агрегатами, которые я нахожу немного kludgy.