Flex 4:将Spark List高度设置为其内容高度

时间:2010-04-01 09:34:56

标签: flex flex4

如何将 Spark List 高度设置为其内容的高度?

试过这个:

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

它适用于单个项目,但 lastRow 在更多项目的情况下为空。

5 个答案:

答案 0 :(得分:25)

在mxml中你可以这样做:

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

您可以在List 中的布局中设置requestedMinRowCount或requestedRowCount。它之前也让我感到高兴。希望有所帮助。

答案 1 :(得分:4)

对于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>

答案 2 :(得分:3)

尝试此布局 - 常规列表

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

答案 3 :(得分: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:)

答案 4 :(得分:1)

最简单的方法

height="{list.dataGroup.contentHeight}"