2009-05-20 11 views
0

Ich habe eine TileList in Flex und muss erkennen können, ob die Bildlaufleisten angezeigt werden oder nicht, so dass ich die Größe der Elemente ändern kann, die sie auslegt.Erkennen, ob UIComponent Bildlaufleisten aktiv ist

ScrollPolicy ist auf auto eingestellt, aber ich brauche eine Variable wie CurrentScrollPolicy, die je nach Inhalt von Aus zu Ein wechselt.

Danke

Antwort

5

Danke eBuildy, dein Recht!

Ich habe ein Beispiel geschaffen, das berücksichtigt auch die Tatsache, dass Bars versteckt erhalten scrollen, wenn nicht eher benötigt als zurück auf null:

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; 
    } 

} 

Danke für die Hilfe.

+0

Dies wird null ref Ausnahme auslösen, wenn super.verticalScrollBar null ist. Sie brauchen 'und' Operation, nicht 'oder'. – alxx

+1

Nein, der zweite Teil der Bedingung wird nicht ausgeführt, wenn uper.verticalScrollBar null ist und false wie erwartet zurückgegeben wird. – robmcm

0

Sie müssen die verticalScrollBar überprüfen. Wenn es Null ist, dann gibt es keine Bildlaufleiste. Wenn es nicht null ist, gibt es eine Bildlaufleiste.

4

Oder, falls Sie nicht wollen, um die Liste zu überschreiben, können Sie so etwas wie

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

Prost haben könnte!

1

Ich benutzte wirklich einfachen Trick, um dieses Problem zu umgehen. Setzen Sie die Bildlaufposition auf das Maximum, da es immer Null ist, wenn keine Bildlaufleisten vorhanden sind. Wenn Sie es überprüfen, und es über Null liegt, fügen Sie dem Element eine Höhe hinzu, da Bildlaufleisten vorhanden sein müssen.

Verwandte Themen