我的Flex应用程序底部有一个应用程序控制栏(属性width =“100%”,dock =“false”,left =“0”,bottom =“0”,height =“50”) 。它包含许多元素(如按钮和标签)。 SWF的宽度是浏览器的宽度。
当用户使浏览器窗口的宽度变小时,在某一点之后,应用程序控制栏上的组件会“压缩”:它们被强制在彼此之上。因此,它变得令人困惑和丑陋。为了确保不会发生这种情况,我将minWidth属性设置为一个值,以便它始终显示组件而不会相互重叠。
但是,然后会出现一个水平滚动条并隐藏应用程序控制栏的下半部分。
我用Google搜索了一下,我发现了这篇文章:flex verticalscrollpolicy bug(由此SO问题引用:Flex: Prevent scrollbar from covering content when automatically displayed)。
但这似乎只适用于固定大小的组件。我的组件的宽度是百分比。有关如何使用水平滚动条的任何想法都没有掩盖应用程序控制栏吗?
谢谢!
答案 0 :(得分:0)
查看是否将以下代码添加到overriden validateSize方法(如您链接到的scrollpolicy bug页面中)以解决问题。
if (width < measuredWidth)
{
height = normal-height + height-of-the-horizontal-scrollbar;
}
else
height = normal-height;
(找到应用程序控制栏和滚动条的正常高度(跟踪它们)并使用这些值。)
答案 1 :(得分: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);
}
水平滚动条不再隐藏内容了!此外,当条形图具有minWidth&amp;时,不会触发Resize事件。舞台的宽度小于那个。
答案 2 :(得分:0)
我今天提出了这个问题,我稍微调整了sri的if语句:
if (buttonContainer.horizontalScrollbar)
{
// Change height & style properties
}
else
{
// Return to original properties.
}