flash builder(flex):DataGroup的VScrollbar,默认情况下如何向下滚动?

时间:2010-01-23 17:49:11

标签: flex flex4 flash-builder

我有一个HGroup,它包含一个带有DataProvider的ArrayCollection的DataGroup。

DataGroup附加了一个VScrollBar。

如何确保每当将新行添加到ArrayCollection时,dataGroup都会向下滚动?

此窗口将用于聊天应用程序,因此每当添加新行时,我都需要查看新行。

我知道我可以执行以下命令向下滚动:chatScrollBar.value = chatScrollbar.maximum

但是,只要新行可见,我需要附加什么事件才能运行此命令?

<s:HGroup width="100%">
 <s:DataGroup id="vertView"  
     clipAndEnableScrolling="true" width="100%" height="60"
     dataProvider="{chatMessages}">

  <s:itemRenderer>
   <fx:Component>
    <s:ItemRenderer width="100%" height="8">
     <s:states>
      <s:State name="normal" />
      <s:State name="hovered" />
     </s:states>

     <s:RichText  text="{ data }" textAlign="left" paddingLeft="2" color="black" color.hovered="blue"/>
    </s:ItemRenderer>
   </fx:Component>
  </s:itemRenderer>

  <s:layout> 
   <s:VerticalLayout useVirtualLayout="true"/> 
  </s:layout> 
 </s:DataGroup> 
 <s:VScrollBar id="chatScrollBar" viewport="{vertView}" 
      height="{vertView.height}" />

</s:HGroup>

2 个答案:

答案 0 :(得分:1)

您必须设置verticalScrollPosition。请参阅herehere。或者尝试使用Spark列表:

<s:List id="list"
            horizontalCenter="0"
            verticalCenter="0">
        <s:layout>
            <s:VerticalLayout id="vLayout" requestedRowCount="4"
                    verticalScrollPosition="{vLayout.maxScrollPosition}" />
        </s:layout>
</s:list>

答案 1 :(得分:1)

尝试使用Scroller,我认为它很简单:

<s:Scroller >
  <s:HGroup>
  ...
  </s:HGroup>
</s:Scroller>

您不需要连接自己的滚动条。