2009-05-20 45 views
0

我在flex中有一個TileList,並且需要能夠檢測滾動條是否顯示,所以我可以改變它所佈置項目的大小。檢測UIComponent是否有滾動條活動

ScrollPolicy被設置爲auto,但是我需要一個像CurrentScrollPolicy這樣的變量,它將從關閉變爲開啓,具體取決於內容。

謝謝

回答

5

感謝eBuildy,您的權利!

我已經創建了一個例子也考慮到滾動條獲取隱藏在不需要的時候,而不是重新設置爲空的事實:

public class CustomTileList extends TileList 
{ 

    public function CustomTileList() 
    { 
     super(); 
    } 

    /** 
    * Returns true if the vertical scroll bar is displayed 
    * @return Boolean 
    * 
    */ 
    public function hasVerticalScrollBar():Boolean 
    { 
     if (super.verticalScrollBar == null || super.verticalScrollBar.visible == false) 
      return false; 
     return true; 
    } 

} 

感謝您的幫助。

+0

如果super.verticalScrollBar爲null,則會拋出空引用異常。你需要'和'操作,而不是'或'。 – alxx 2011-04-21 09:56:18

0

您需要檢查verticalScrollBar。如果它爲null,那麼沒有滾動條。 如果它不是null,那麼就有一個滾動條。

4

或者,如果你不想覆蓋列表,你可以有像

if(listInstance.mx_internal::scroll_verticalScrollBar != null){...} 

乾杯!

1

我用了很簡單的方法來解決這個問題。將滾動位置設置爲最大值,因爲如果檢查它時沒有滾動條,它將始終爲零,並且它高於零將元素添加到元素,因爲必須有滾動條。

yourControl.verticalScrollPosition = yourConrol.maxVerticalScrollPosition; 

for (var i:int=0; i <= yourControl.verticalScrollPosition ;i++) 
{ 
    yourControl.height = yourControl.height+16; 
}