[英]How can I get a Flex container to scroll to the last position?
我正在创建一个聊天窗口,非常类似于此示例
http://demo.seanhess.net/oneshots/scrolling.swf
每当添加聊天时,我都希望它完全显示最后一条消息。 我正在使用maxVerticalScrollPosition设置列表上的滚动位置,但这始终是错误的(请参见示例)。 它会连续约下冲。 我已经用常规容器尝试过了,它做同样的事情。 如果我执行maxVerticalScrollPosition + 1,则可以正常工作,但是如果最后一条消息特别长,则会被截断(仅显示顶部)。
我如何才能滚动到容器的实际底部?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
protected function addChat():void
{
collection.addItem(new String(input.text));
list.verticalScrollPosition = list.maxVerticalScrollPosition;
input.text = "";
}
]]>
</mx:Script>
<mx:Panel width="400" height="290">
<mx:List id="list" width="100%" height="100%" variableRowHeight="true">
<mx:dataProvider>
<mx:ArrayCollection id="collection"/>
</mx:dataProvider>
<mx:itemRenderer>
<mx:Component>
<mx:Text text="{data}"/>
</mx:Component>
</mx:itemRenderer>
</mx:List>
<mx:HBox width="100%">
<mx:TextInput id="input" width="100%" enter="addChat()"/>
<mx:Button label="add" click="addChat()"/>
</mx:HBox>
</mx:Panel>
</mx:Application>
将addChat()分成两个函数,addChat()和addChatScrollToEnd()。 将聊天项添加到addChat()内,然后添加具有滚动行的callLater(addChatScrollToEnd)。
或者,您可以调用list.validateNow(),但出于性能原因,建议您不要调用它。
这应该为您工作。
<mx:Script>
<![CDATA[
protected function addChat():void
{
collection.addItem(new String(input.text));
callLater(function() {
list.verticalScrollPosition = list.maxVerticalScrollPosition;
});
input.text = "";
}
]]>
</mx:Script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.