2010-04-01 12 views
13

Как установить Spark List Высота до высоты его содержимого?Flex 4: Установка высоты искроберического листа до высоты его содержимого

Пробовал так:

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

Он работает в случае одного элемента, но lastRow является недействительным в случае большего количества деталей.

ответ

25

В MXML вы можете сделать это так:

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

Вы устанавливаете requestedMinRowCount или requestedRowCount в макете внутри списка. Это достало меня и раньше. Надеюсь, это поможет.

+1

Я пытаюсь заставить это работать с TileLayout, но нет запросаMinRowCount для TileLayout. Интересно, как получить высоту, чтобы динамически установить список при использовании TileLayout, чтобы список занимал только пространство, для которого ему нужно отображать его строки? –

3

Для TileList Я сделал это так:

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

} 

Или вы можете продлить ваше TileLayout :)

3

попробовать этот макет - для регулярного списка

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

Самый простой путь для этого

height="{list.dataGroup.contentHeight}" 
Смежные вопросы