水平滚动条隐藏ApplicationControlBar的内容

时间:2009-10-09 23:52:48

标签: flex actionscript-3

我的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)。

但这似乎只适用于固定大小的组件。我的组件的宽度是百分比。有关如何使用水平滚动条的任何想法都没有掩盖应用程序控制栏吗?

谢谢!

3 个答案:

答案 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.
}