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

13

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

尝试过以下代码:

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

对于单个项目它是工作的,但是在多个项目的情况下lastRow是空的。

5个回答

25

在mxml中,您可以像这样实现:

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

你需要在 List 组件内的布局中设置 requestedMinRowCount 或 requestedRowCount。这也曾经困扰过我。希望能有所帮助。


1
我正在尝试使用TileLayout使其正常工作,但是TileLayout没有requestedMinRowCount。我想知道如何在使用TileLayout时动态设置列表的高度,以便列表仅占用需要显示行的空间。 - Stephen Horvath

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>

3
尝试使用这种布局 - 适用于常规列表。
<s:layout>
<s:VerticalLayout horizontalAlign="contentJustify" 
  gap="0"
  verticalAlign="middle" 
  variableRowHeight="false"/>
</s:layout>

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 :)


1

最简单的方法是这样做

height="{list.dataGroup.contentHeight}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接