Flex: запретить полосу прокрутки покрывать содержимое при автоматическом отображении - PullRequest
10 голосов
/ 15 ноября 2008

У меня есть холст во Flex, который можно прокручивать только в вертикальном направлении, поэтому я устанавливаю атрибуты холста следующим образом:

verticalScrollPolicy="auto" horizontalScrollPolicy="off"

Проблема здесь в том, что вертикальная полоса прокрутки закрывает содержимое, когда оно появляется, - хотя остается достаточно горизонтального пространства. Я ожидал бы, что размер контента будет автоматически изменен.

При установке политики вертикальной прокрутки в положение «вкл.» Содержимое также не распространяется.

В случае, если я установил обе политики прокрутки в 'auto', я также получаю горизонтальную полосу прокрутки только для прокрутки до области, которая покрыта вертикальной полосой прокрутки.

Есть ли обходной путь, как я могу ретранслировать содержимое холста, когда отображается вертикальная полоса прокрутки, чтобы он не покрывал какой-либо контент?

Ответы [ 5 ]

16 голосов
/ 15 ноября 2008

Это ошибка. См. Ошибка вертикали FlexScrollPolicy для обхода проблемы.

4 голосов
/ 16 ноября 2008

Просто замечание по поводу этой проблемы: на самом деле это не ошибка, а известное (и предполагаемое?) Поведение:

"Flex учитывает полосы прокрутки в своих расчетах размеров, только если вы явно установить политику прокрутки в ScrollPolicy.ON. Итак, если вы используете политика автоматической прокрутки (по умолчанию), полоса прокрутки перекрывает кнопки. к предотвратить такое поведение, вы можете установить height свойство для контейнера HBox или разрешить изменение размера контейнера HBox установив ширину в процентах. Помните, что изменение высоты контейнер HBox вызывает другие компоненты в вашем приложении для перемещения и изменить размер в соответствии с их собственным правила определения размеров. "

- Из Определение размеров компонентов в справке Flex 3, в разделе «Использование полос прокрутки»

3 голосов
/ 25 февраля 2011

Мне нужно было найти этот обходной путь Flex ScrollPolicy.AUTO Недостаточно хорошо , который решил эту проблему, потому что Ошибка вертикали FlexScrollPolicy обходной путь не работал для меня.

2 голосов
/ 18 августа 2011

на vbox или другом компоненте, основанном на контейнере, я решил эту проблему следующим образом.

Неправильно:

<mx:VBox width="100%" height="100%"
      verticalScrollPolicy="auto" horizontalScrollPolicy="off">
     <mx:Repeater dataProvider="{hede}">
          <custom:RenderItem ........../>
     </mx:Repeater>
</mx:VBox>

полоса прокрутки отсутствует

Рабочая версия:

<mx:VBox width="100%" height="100%"
    **minHeight="1"** horizontalScrollPolicy="off">
    <mx:Repeater dataProvider="{hede}">
        <custom:RenderItem ........../>
    </mx:Repeater>
</mx:VBox>
0 голосов
/ 16 марта 2010

Я тоже. У меня обычно возникают некоторые проблемы с вертикальной прокруткой в ​​Flex, поэтому я предпочитаю использовать полосу прокрутки браузера для прокрутки всего приложения. Обходной путь можно найти здесь: Как изменить размер рабочей области Flex и использовать полосу прокрутки браузера .

Код, который я использую:

В Flex:

ExternalInterface.call("setInitialFlashHeight", this.height);

В моем HTML (JavaScript):

function setInitialFlashHeight(newHeight) {
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

А если вы хотите добавить (или удалить) некоторую высоту:

function addFlashHeight(height) {
    var divHeight;
    var obj = document.getElementById('my_flash');

    if (obj.offsetHeight) {
        divHeight = obj.offsetHeight;
    } else if (obj.style.pixelHeight){
        divHeight = obj.style.pixelHeight;
    }

    var newHeight = divHeight + height;
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

Для удаления используйте «-» вместо «+».

...