2010-01-23 40 views
0

我有一個HGroup,它包含一個DataGroup和一個DataProvider的ArrayCollection。flash builder(flex):數據組的VScrollbar,如何默認向下滾動?

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> 

回答

1

您必須設置verticalScrollPosition。見herehere。或者嘗試一下本作火花列表:使用Scroller

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

不幸的是valueCommit並沒有得到執行,只要我添加一行, 我試過使用s:List代替s:DataGroup但我得到了相同的結果 – ufk 2010-01-23 20:29:20

+0

試試我添加的例子。 – Thomas 2010-01-24 08:45:22

+0

VerticalLayout沒有maxScrollPosition – ufk 2010-01-24 10:35:28

1

嘗試,我認爲這是非常簡單:

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

你不應該需要關聯自己的滾動條。

相關問題