2010-04-01 8 views
13

Wie wird eine Spark-Liste Höhe auf die Höhe des Inhalts gesetzt?Flex 4: Setzen der Höhe der Spark-Liste auf die Höhe des Inhalts

dies versucht:

var lastRow:IVisualElement = 
       myList.dataGroup.getElementAt(myList.dataGroup.numElements - 1); 
myList.height = lastRow.y + lastRow.height; 

Es im Falle eines einzelnen Elements funktioniert, aber LastRow ist bei mehr Elemente null.

Antwort

25

in MXML können Sie es wie so tun:

<s:List width="100%"> 
    <s:layout> 
     <s:VerticalLayout useVirtualLayout="false" requestedMinRowCount="1"/> 
    </s:layout> 
</s:List> 

Sie setzen den requestedMinRowCount oder die requestedRowCount im Layout in der Liste. Es hat mich auch schon früher erwischt. Ich hoffe, das hilft.

+1

Ich versuche, dies mit TileLayout zu arbeiten, aber es gibt keine requestedMinRowCount für TileLayout. Ich frage mich, wie man die Höhe bei der Verwendung von TileLayout dynamisch für die Liste festlegen kann, so dass die Liste nur Platz beansprucht, für den sie ihre Zeilen anzeigen muss? –

3

Für TileList Ich habe es wie folgt aus:

<s:List width="100%" height="{(tilelayout.rowCount * tilelayout.rowHeight) + ((tilelayout.rowCount - 1) * tilelayout.verticalGap)}"> 
    <s:layout> 
     <s:TileLayout id="tilelayout" rowHeight="190" columnWidth="130" horizontalGap="5" verticalGap="10" /> 
    </s:layout> 
</s:List> 
1
public class MyTileLayout extends TileLayout 
{ 

    override public function updateDisplayList(w:Number, h:Number):void 
    { 
     super.updateDisplayList(w,h); 

     target.height = rowCount*rowHeight + verticalGap*(rowCount - 1); 
    } 

} 

Oder Sie können Ihre TileLayout erweitern :)

3

dieses Layout versuchen - für regelmäßige Liste

<s:layout> 
<s:VerticalLayout horizontalAlign="contentJustify" 
    gap="0" 
    verticalAlign="middle" 
    variableRowHeight="false"/> 
</s:layout> 
0

Der einfachste Weg, dies zu tun

height="{list.dataGroup.contentHeight}"