10

我在 Flex 中有一个只能在垂直方向滚动的画布,所以我将画布的属性设置如下:

verticalScrollPolicy="auto" horizontalScrollPolicy="off"

这里的问题是垂直滚动条在出现时会覆盖内容 - 尽管还有足够的水平空间。我本来希望内容大小会自动调整。

将垂直滚动策略设置为“on”时,也不会覆盖任何内容。

如果我将两个滚动策略都设置为“自动”,我还会得到一个水平滚动条,仅用于滚动到垂直滚动条覆盖的区域。

是否有一种解决方法,当显示垂直滚动条时,如何重新布局画布的内容,使其不覆盖任何内容?

4

5 回答 5

16

这是一个错误。有关解决方法,请参阅Flex verticalScrollPolicy 错误

于 2008-11-15T18:05:22.830 回答
4

关于这个问题的一个旁注:它实际上不是一个错误,而是已知的(和预期的?)行为:

“仅当您将滚动策略显式设置为时,Flex 才会在其大小计算中考虑滚动条 ScrollPolicy.ON。因此,如果您使用自动滚动策略(默认),滚动条会与按钮重叠。为了防止这种行为,您可以设置 height属性用于 HBox 容器或允许 HBox 容器通过设置基于百分比的宽度来调整大小。请记住,更改 HBox 容器的高度会导致应用程序中的其他组件根据它们自己的大小规则移动和调整大小。

-- 来自Flex 3 帮助中的“调整组件大小” ,在“使用滚动条”下

于 2008-11-16T16:52:40.073 回答
3

我必须找到解决此问题的解决方法Flex ScrollPolicy.AUTO Not Good Enough,因为Flex verticalScrollPolicy 错误解决方法对我不起作用。

于 2011-02-25T11:19:33.817 回答
2

在 vbox 或其他基于 Container 的组件上,我解决了这样的问题。

错误的:

<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>
于 2011-08-18T07:38:13.870 回答
0

我也是。我通常对 Flex 中的 verticalScrollBar 有一些问题,所以我更喜欢使用浏览器的滚动条来滚动整个应用程序。您可以在此处找到解决方法:如何调整 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';
}

要删除,请使用“-”而不是“+”。

于 2010-03-16T15:24:54.967 回答