<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
protected function addItem(event:MouseEvent):void
{
var item:Button = new Button();
item.label = String(testContainer.numElements);
item.width = 50;
item.height = 50;
testContainer.addElement(item);
}
protected function clearAll(event:MouseEvent):void
{
testContainer.removeAllElements();
}
protected function clearLastItem(event:MouseEvent):void
{
if(testContainer.numElements > 0)
{
testContainer.removeElementAt(testContainer.numElements - 1);
}
}
]]>
</fx:Script>
<s:controlBarContent>
<s:Button click="addItem(event)" label="add item"/>
<s:Button click="clearLastItem(event)" label="clear last "/>
<s:Button click="clearAll(event)" label="clearAll"/>
</s:controlBarContent>
<s:SkinnableContainer id="testContainer"
backgroundColor="0xcccccc"
alpha="0.8"
width="100%"
>
<s:layout>
<s:TileLayout id="tileLayout"
clipAndEnableScrolling="true"
paddingLeft="5"
paddingRight="5"
orientation="rows"
/>
</s:layout>
</s:SkinnableContainer>
</s:Application>
一個解決的方式是繼承TileLayout並override updateDisplayList 如下:
override public function updateDisplayList(unscaledWidth:Number , unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth , unscaledHeight);
(target as GroupBase).explicitHeight = Math.ceil(rowCount * (rowHeight + verticalGap) - verticalGap);
}
詳細內容請參考:http://forums.adobe.com/thread/565055
沒有留言:
張貼留言