Flex 4: Setting Spark List height to its content h

2019-01-24 04:06发布

How to set a Spark List height to the height of its content?

Tried this:

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

It works in case of a single item, but lastRow is null in case of more items.

标签: flex flex4
5条回答
虎瘦雄心在
2楼-- · 2019-01-24 04:19

In mxml you can do it like so:

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

You set the requestedMinRowCount or the requestedRowCount in the layout inside the List. It got me before, too. Hope that helps.

查看更多
The star\"
3楼-- · 2019-01-24 04:24

Easiest way to do this

height="{list.dataGroup.contentHeight}"
查看更多
Deceive 欺骗
4楼-- · 2019-01-24 04:25

try this layout - for regular list

<s:layout>
<s:VerticalLayout horizontalAlign="contentJustify" 
  gap="0"
  verticalAlign="middle" 
  variableRowHeight="false"/>
</s:layout>
查看更多
SAY GOODBYE
5楼-- · 2019-01-24 04:32

For TileList I did it like this:

<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>
查看更多
霸刀☆藐视天下
6楼-- · 2019-01-24 04:37
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);
    }

}

Or you can extend your TileLayout :)

查看更多
登录 后发表回答