我在Flex中有一个画布,只能在垂直方向滚动,所以我按如下方式设置画布的属性:
verticalScrollPolicy="auto" horizontalScrollPolicy="off"
这里的问题是垂直滚动条在出现时覆盖了内容 - 尽管剩下足够的水平空间。我原本预计内容大小会自动调整。
将垂直滚动策略设置为“on”时,也不会涵盖任何内容。
如果我将两个滚动策略都设置为'auto',我还会得到一个水平滚动条,只是滚动到垂直滚动条覆盖的区域。
是否有一种解决方法,当显示垂直滚动条时,如何重新布局画布的内容,使其不包含任何内容?
答案 0 :(得分:16)
这是一个错误。有关解决方法,请参阅 Flex verticalScrollPolicy bug 。
答案 1 :(得分:4)
关于这个问题只是一个侧面说明:它实际上不是一个错误,但已知(并且打算?)行为:
“Flex仅在您的大小计算中考虑滚动条 显式设置滚动策略
ScrollPolicy.ON
。所以,如果你使用 自动滚动策略(默认),. 滚动条与按钮重叠。至 防止这种行为,你可以设置 HBox容器的height
属性 或允许HBox容器调整大小 通过设置基于百分比的宽度。 请记住,改变高度 HBox容器导致其他容器 要移动的应用程序中的组件 并根据自己的大小调整 调整规则。“
- 来自Flex 3帮助中的Sizing Components,在“使用滚动条”下
答案 2 :(得分:3)
我必须找到解决此问题的解决方法Flex ScrollPolicy.AUTO Not Good Enough,因为Flex verticalScrollPolicy bug解决方法对我不起作用。
答案 3 :(得分: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>
答案 4 :(得分:0)
我也是。我通常在Flex中使用verticalScrollBar有一些问题,所以我更喜欢使用浏览器的滚动条来滚动整个应用程序。您可以在此处找到解决方法:How to Resize the Flex Stage and Use the Browser Scrollbar。
我使用的代码:
在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';
}
要删除,请使用“ - ”代替“+”。