2009-10-09 2 views
0

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

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

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

У меня googled, и я нашел эту статью: flex verticalscrollpolicy bug (ссылка на этот вопрос SO: Flex: Prevent scrollbar from covering content when automatically displayed).

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

Спасибо!

ответ

0

Так происходит, когда 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

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

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

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

+0

неа, не работает. Я думаю, вы пытаетесь увеличить высоту, надеясь, что контент будет более заметным - но фактическая высота не изменится, и появятся вертикальные полосы прокрутки, что делает вещи хуже :-( – sc45

0

Я это придумал сегодня, и я слегка подправили SRI, если заявление, как это:

if (buttonContainer.horizontalScrollbar) 
{ 
    // Change height & style properties 
} 
else 
{ 
    // Return to original properties. 
} 
Смежные вопросы