0

dataProvider の ArrayCollection を持つ DataGroup を含む HGroup があります。

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

verticalScrollPosition を設定する必要があります。ここまたはここを参照してください。または、Spark リストに対してこれを試してください。

<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 に答える
1

Scrollerを使用してみてください。次のように簡単だと思います。

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

独自のスクロールバーを接続する必要はありません。

于 2011-03-31T08:43:38.087 に答える