Ответ 1
Это ошибка. См. Ошибка Flex verticalScrollPolicy для обходного пути.
У меня есть холст в Flex, который можно прокручивать только в вертикальном направлении, поэтому я устанавливаю атрибуты холста следующим образом:
verticalScrollPolicy="auto" horizontalScrollPolicy="off"
Проблема заключается в том, что вертикальная полоса прокрутки покрывает содержимое, когда оно появляется - хотя есть достаточно горизонтальной комнаты слева. Я бы предположил, что размер содержимого будет автоматически изменен.
При настройке политики вертикальной прокрутки на "on" содержимое не распространяется также.
В случае, если для обеих политик прокрутки задано значение "авто", я также получаю горизонтальную полосу прокрутки только для прокрутки к области, которая покрыта вертикальной полосой прокрутки.
Существует ли способ обхода содержимого холста, когда отображается вертикальная полоса прокрутки, чтобы он не охватывал какой-либо контент?
Это ошибка. См. Ошибка Flex verticalScrollPolicy для обходного пути.
Просто примечание к этой проблеме: на самом деле это не ошибка, а известное (и предполагаемое?) поведение:
"Flex считает полосы прокрутки в расчетах размеров только в том случае, если вы явно задайте политику прокрутки
ScrollPolicy.ON
. Итак, если вы используете автоматической прокрутки (по умолчанию), Полоса прокрутки перекрывает кнопки. к предотвратите это поведение, вы можете установитьheight
свойство контейнера HBox или разрешить размер контейнера HBox путем установки процентной ширины. Помните, что изменение высоты контейнер HBox вызывает другие компонентов в вашем приложении для перемещения и изменять размеры в соответствии с их собственными правила калибровки."
- Из Размерные компоненты в справке Flex 3 в разделе "Использование полос прокрутки"
Мне пришлось найти это обходное решение Flex ScrollPolicy.AUTO Нехорошо Достаточно, который решил эту проблему, потому что Flex verticalScrollPolicy ошибка обходной путь не работал у меня.
на 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>
Я тоже. Обычно у меня возникают проблемы с verticalScrollBar в 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';
}
Чтобы удалить, вы используете "-" вместо "+".