Apache flex Flex:防止滚动条在自动显示时覆盖内容
我在Flex中有一个画布,只能在垂直方向上滚动,因此我将画布的属性设置如下:Apache flex Flex:防止滚动条在自动显示时覆盖内容,apache-flex,scrollbar,Apache Flex,Scrollbar,我在Flex中有一个画布,只能在垂直方向上滚动,因此我将画布的属性设置如下: verticalScrollPolicy="auto" horizontalScrollPolicy="off" 这里的问题是,垂直滚动条出现时会覆盖内容——尽管还有足够的水平空间。我原以为内容大小会自动调整 将垂直滚动策略设置为“开”时,也不会覆盖任何内容 如果我将两个滚动策略都设置为“自动”,我还会得到一个水平滚动条,用于滚动到垂直滚动条覆盖的区域 当垂直滚动条显示时,是否有一种解决方法可以重新显示画布的内容,使
verticalScrollPolicy="auto" horizontalScrollPolicy="off"
这里的问题是,垂直滚动条出现时会覆盖内容——尽管还有足够的水平空间。我原以为内容大小会自动调整
将垂直滚动策略设置为“开”时,也不会覆盖任何内容
如果我将两个滚动策略都设置为“自动”,我还会得到一个水平滚动条,用于滚动到垂直滚动条覆盖的区域
当垂直滚动条显示时,是否有一种解决方法可以重新显示画布的内容,使其不覆盖任何内容?这是一个错误。有关解决方法,请参阅。关于此问题的一个旁注:它实际上不是一个bug,而是已知的(和预期的?)行为: “Flex仅在以下情况下才会在其大小计算中考虑滚动条: 显式地将滚动策略设置为
ScrollPolicy.ON
。因此,如果您使用
自动滚动策略(默认值),即
滚动条与按钮重叠。要
如果要防止此行为,可以设置
HBox容器的高度属性
或者允许HBox容器调整大小
通过设置基于百分比的宽度。
请记住,更改
HBox容器会导致其他问题
要移动的应用程序中的组件
并根据自己的需要调整大小
大小规则。”
--在Flex 3帮助中的“使用滚动条”下,我也是。我通常在Flex中使用verticalScrollBar时会遇到一些问题,所以我更喜欢使用浏览器的滚动条来滚动整个应用程序。您可以在此处找到解决方法: 我使用的代码是: 在Flex中:
ExternalInterface.call("setInitialFlashHeight", this.height);
在我的HTML(JavaScript)中:
如果要添加(或删除)一些高度:
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';
}
若要删除,请使用“-”而不是“+”我必须找到解决此问题的解决方法,因为解决方法对我不起作用。在vbox或其他基于容器的组件上,我这样解决了该问题 错:
<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>
那么它仍然是一个bug。我已经设置了高度和宽度百分比。但当显示滚动条时,它不会调整内容的大小。我理解摘录的方式是,通过将宽度设置为一个百分比值而完全不设置高度,组件本身将在显示滚动条时调整大小,而不是内容。不过,这可能仍然不适用于你的具体情况。我已经为此奋斗了很多年-感谢指针。这只在画布有明确的高度时起作用。如果它有基于百分比的高度怎么办?@bug-a-lot我刚刚为一个有百分比高度的画布实现了这个,它工作得很好。只是注意到这最终在Flex 4中得到了修复。当我在创建后更改应用程序大小时,这个对我不起作用。我将策略设置代码作为updateComplete
事件的一部分调用,从而解决了这个问题。但是,在updateDisplayList()
覆盖中设置它可能更合适。
<mx:VBox width="100%" height="100%"
**minHeight="1"** horizontalScrollPolicy="off">
<mx:Repeater dataProvider="{hede}">
<custom:RenderItem ........../>
</mx:Repeater>
</mx:VBox>