Горизонтальная полоса прокрутки скрывает содержимое ApplicationControlBar - PullRequest
0 голосов
/ 10 октября 2009

У меня есть панель управления приложением внизу моего приложения Flex (с атрибутами width = "100%", dock = "false", left = "0", bottom = "0", height = "50") , Он содержит много элементов (таких как кнопки и метки). Ширина SWF - это ширина браузера.

Когда пользователь уменьшает ширину окна браузера, после определенной точки компоненты на панели управления приложения «сжимаются»: они оказываются друг над другом. И так, это становится запутанным и безобразным. Чтобы этого не произошло, я установил для атрибута minWidth значение, чтобы оно всегда отображало компоненты без их наложения друг на друга.

Но затем появляется горизонтальная полоса прокрутки, которая скрывает нижнюю половину панели управления приложения.

Я гуглил и нашел эту статью: ошибка flex verticalscrollpolicy (на которую ссылается этот вопрос SO: Flex: запретить полосе прокрутки закрывать содержимое, когда автоматически отображается ).

Но, похоже, это применимо только к компоненту фиксированного размера. Ширина моего компонента в процентах. Есть идеи, как сделать так, чтобы горизонтальная полоса прокрутки появлялась и не закрывала панель управления приложением?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 13 октября 2009

Так происходит, когда ApplicationControlBar фиксируется внизу: bottom = 0 и left = 0. Самое простое решение - сделать панель намного выше (это приведет к тому, что содержимое будет намного выше высоты полосы прокрутки). Но это делает его немного уродливым.

Итак, другое решение: в файле MXML я фиксирую событие Resize. И в этой функции я делаю это:

if (width < bar.minWidth) // width is the width of the SWF
{
    bar.height = ORIGINAL_SIZE + 10;
    hbox.setStyle("verticalAlign", "top");
    hbox.setStyle("verticalCenter", -10);
} else {
    // normal case
    box.height = ORIGINAL_SIZE;
    hbox.setStyle("verticalAlign", "middle");
    hbox.setStyle("verticalCenter", 0);
}

А горизонтальная полоса прокрутки больше не скрывает содержимое! Кроме того, событие Resize не запускается, когда полоса имеет minWidth и ширина сцены меньше этой.

0 голосов
/ 18 июля 2011

У меня было это сегодня, и я немного подправил заявление Шри, если это так:

if (buttonContainer.horizontalScrollbar)
{
    // Change height & style properties
}
else
{
    // Return to original properties.
}
0 голосов
/ 10 октября 2009

Убедитесь, что добавление следующего кода в переопределенный метод validateSize (как на странице scrollpolicy bug , на которую вы ссылаетесь) решает проблему.

if (width < measuredWidth)
{
  height = normal-height + height-of-the-horizontal-scrollbar;
}
else
  height = normal-height;

(Найти нормальную высоту панели управления приложения и полосы прокрутки (обвести их) и использовать эти значения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...