Apache flex Can';t除非高度在Flex 3中已明确设置(以像素为单位),否则自动滚动VBox
我有一个VBox,它可以通过编程动态地添加和删除子对象。高度设置为100%,垂直滚动策略=自动 当用户希望将另一个子项添加到该Vbox时,我希望它自动滚动到Vbox的底部,因为该子项是在那里添加的 我已经尝试了在网上找到的所有解决方案,但无论如何,verticalScrollPosition和maxVerticalScrollPosition都始终等于0。即使我手动滚动到VBox的底部并按下一个按钮来提醒这些数字(即使在“validateNow()”之后) 我唯一能让这些数字改变程序的时候是当VBox高度设置为像素时,我不希望这样,因为孩子们都有不同的高度Apache flex Can';t除非高度在Flex 3中已明确设置(以像素为单位),否则自动滚动VBox,apache-flex,flash,flex3,containers,Apache Flex,Flash,Flex3,Containers,我有一个VBox,它可以通过编程动态地添加和删除子对象。高度设置为100%,垂直滚动策略=自动 当用户希望将另一个子项添加到该Vbox时,我希望它自动滚动到Vbox的底部,因为该子项是在那里添加的 我已经尝试了在网上找到的所有解决方案,但无论如何,verticalScrollPosition和maxVerticalScrollPosition都始终等于0。即使我手动滚动到VBox的底部并按下一个按钮来提醒这些数字(即使在“validateNow()”之后) 我唯一能让这些数字改变程序的时候是当V
请告诉我是否可以设置垂直滚动位置,而无需硬编码像素高度?我是否遗漏了一些显而易见的内容?实际上,您可能没有滚动VBox;如果您的VBox被另一个容器(如画布或类似容器)包含,并且您正在向VBox添加项目(如您所说),则执行滚动的是画布,而不是VBox,在这种情况下,VBox确实会为其滚动位置返回0 无论如何,你是对的——你必须设置组件的高度;即使是约束布局设置(例如,“bottom='10'”等)也不起作用。但是,如果您能够通过将VBox的维度以某种方式绑定到另一个控件,或者通过在子控件的附加/创建过程中显式地设置它们来设置VBox的高度,那么您应该能够完成所要完成的任务 下面是一个AIR应用程序的示例,我已经模拟了这个示例。基本上,它只是将随机大小的框添加到VBox中,并在创建每个子项后滚动到VBox的底部
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" verticalScrollPolicy="off" horizontalScrollPolicy="off" width="250">
<mx:Script>
<![CDATA[
import mx.core.Application;
import mx.containers.Box;
import mx.events.FlexEvent;
private function addItem(h:Number):void
{
var b:Box = new Box();
b.width = 200;
b.setStyle("backgroundColor", 0xFFFFFF);
b.height = h;
// Wait for the component to complete its creation, so you can measure and scroll accordingly later
b.addEventListener(FlexEvent.CREATION_COMPLETE, b_creationComplete);
vb.addChild(b);
}
private function b_creationComplete(event:FlexEvent):void
{
event.currentTarget.removeEventListener(FlexEvent.CREATION_COMPLETE, b_creationComplete);
vb.verticalScrollPosition = vb.getChildAt(vb.numChildren - 1).y;
}
]]>
</mx:Script>
<mx:VBox id="vb" top="10" right="10" left="10" height="{Application.application.height - 80}" verticalScrollPolicy="on" />
<mx:Button label="Add Item" click="addItem(Math.random() * 100)" bottom="10" left="10" />
</mx:WindowedApplication>
在这种情况下,VBox的高度将绑定到其包含组件的高度(此处仅为应用程序)。其他一切都应该不言自明
希望有帮助!如果您有任何问题,请发回。您是对的,这是一个滚动画布中不断增长的VBox。画布必须滚动。谢谢。我嵌套了好几层控件,当
height=“{this.height}”
不起作用时(我得到了一个滚动条,但是VBox有20像素高)