0

我有一个 HGroup,其中包含一个 DataGroup 和一个 DataProvider 的 ArrayCollection。

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>
4

2 回答 2

1

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

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

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

于 2011-03-31T08:43:38.087 回答
1

您必须设置verticalScrollPosition。见这里这里。或者试试这个火花列表:

<s:List id="list"
            horizontalCenter="0"
            verticalCenter="0">
        <s:layout>
            <s:VerticalLayout id="vLayout" requestedRowCount="4"
                    verticalScrollPosition="{vLayout.maxScrollPosition}" />
        </s:layout>
</s:list>
于 2010-01-23T18:25:11.837 回答