2014-04-08 58 views
1

我用flex3.5,我有一個flex 3.5:如何在<mx:list>的末尾滾動?

<mx:List id="globalchat_txt" x="0" y="0" width="100%" height="100%" variableRowHeight="true" dataProvider="{messages}" itemRenderer="chat.MessageChat"> 

我添加一些項目的消息。

var message:Message = new Message(txt); 
globalchat_txt.validateNow(); 
messages.addItem(message); 
globalchat_txt.scrollToIndex(messages.length+1); 
globalchat_txt.verticalScrollPosition = 99999; 
globalchat_txt.validateNow(); 

我不能讓列表滾動到最後的位置! 它到最後的位置,但有像10-15pixels失蹤!

enter image description here

回答

1

這是一個已知的問題Flex中List(二者火花和MX)。

它可以通過下面的方法(通過flexponential建議)來解決:

public static function scrollToBottom(list:List):void { 
    // update the verticalScrollPosition to the end of the List 
    // virtual layout may require us to validate a few times 
    var delta:Number = 0; 
    var count:int = 0; 

    while (count++ < 10) { 
     list.validateNow(); 
     delta = list.layout.getVerticalScrollPositionDelta(NavigationUnit.END); 
     list.layout.verticalScrollPosition += delta; 

     if (delta == 0) 
      break; 
    } 
} 

我也報這個問題,因爲bug #33660 for Apache Flex前一段時間...

1

我們也遇到了這個問題。試試這個,擴展列表並覆蓋scrollToIndex函數(FLEX SDK3.5)

override public function scrollToIndex(index:int):Boolean 
    { 
     // when index=-1, do nothing 
     if (index == -1) 
      return false; 

     var success:Boolean = super.scrollToIndex(index); 
     if (success) 
     { 
      return true; 
     } 

     // if doesn't show complete, immediately scroll down 
     var item:ListRowInfo = rowInfo[index - verticalScrollPosition]; 
     if (item.height + item.y > height) 
     { 
      verticalScrollPosition += 1; 
      return true; 
     } 

     return false; 
    } 
相關問題