Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何在Flex中以编程方式滚动到mx:TextArea的底部?_Apache Flex - Fatal编程技术网

Apache flex 如何在Flex中以编程方式滚动到mx:TextArea的底部?

Apache flex 如何在Flex中以编程方式滚动到mx:TextArea的底部?,apache-flex,Apache Flex,考虑以下mx:TextArea <mx:TextArea id="textArea"/> 。。如何确保textarea向下滚动到底部,以便用户可以看到添加的最后一行?我不知道如何使用Halo textarea显式执行此操作,但Spark textarea有一个scrollToRange方法,在这种情况下可能对您有用。如果不想使用Spark组件,另一种方法是使用Halo列表组件,并将每一新行作为新项添加到列表的数据提供程序中。每次添加到数据提供程序后,可以调用列表上的scrollTo

考虑以下mx:TextArea

<mx:TextArea id="textArea"/>

。。如何确保textarea向下滚动到底部,以便用户可以看到添加的最后一行?

我不知道如何使用Halo textarea显式执行此操作,但Spark textarea有一个scrollToRange方法,在这种情况下可能对您有用。如果不想使用Spark组件,另一种方法是使用Halo列表组件,并将每一新行作为新项添加到列表的数据提供程序中。每次添加到数据提供程序后,可以调用列表上的scrollToIndex以确保新项可见。希望有帮助

添加文本集后

callLater(scrollToEnd);

....

function scrollToEnd():void {
   textArea.verticalScrollPosition = int.MAX_VALUE;
}
它应该滚动到最后


甚至比callLater更好的方法是使用
invalidateProperties
/
commitProperties

将光标放在文本的末尾。还应滚动以显示光标:

textArea.selectionBeginIndex =  textArea.text.length;
textArea.selectionEndIndex =  textArea.text.length;

该代码在Flash Builder 4.5.1下适用于我:

chatroom.scrollToRange(int.MAX_VALUE, int.MAX_VALUE); 

山姆:我试过了,但不幸的是,它只会向下滚动到最后一行的第二行。此方法有时可能有效,但并非总是有效。您可以在添加新文本后,但在设置verticalScrollPosition以便TextArea知道新文本的大小之前,尝试调用validateNow()。@joshtynjala,您应该避免调用
validateNow()
,因为这可能会导致性能问题。我将代码更新为使用
callLater
哪个更好
invalidateProperties
/
commitProperties
会更好。不幸的是,这只能用于滚动到底部,而不能滚动到任何像素或百分比偏移,不过技巧不错:)
chatroom.scrollToRange(int.MAX_VALUE, int.MAX_VALUE);