<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: FlowLayout Part 2 &#8211; Gap, VerticalAlign and Scrolling</title>
	<atom:link href="http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/feed/" rel="self" type="application/rss+xml" />
	<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/</link>
	<description>Evtim on Flex SDK</description>
	<lastBuildDate>Thu, 17 Nov 2011 17:57:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Evtim</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11614</link>
		<dc:creator>Evtim</dc:creator>
		<pubDate>Wed, 20 Apr 2011 02:54:10 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11614</guid>
		<description>@pete
Hi Pete, 
What do you mean by &quot;variable width&quot;?  For the rowHeight, you can either set the height of all the elements to be the height of the row (where you calculate the height of the row probably as the max preferred height of all elements on that row) or another option, if you need scaling specifically, is to use the ILayoutElement::transformAround() method - see here &lt;a href=&quot;http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/ILayoutElement.html&quot; rel=&quot;nofollow&quot;&gt;</description>
		<content:encoded><![CDATA[<p>@pete<br />
Hi Pete,<br />
What do you mean by &#8220;variable width&#8221;?  For the rowHeight, you can either set the height of all the elements to be the height of the row (where you calculate the height of the row probably as the max preferred height of all elements on that row) or another option, if you need scaling specifically, is to use the ILayoutElement::transformAround() method &#8211; see here <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/ILayoutElement.html" rel="nofollow"></a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pete</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11608</link>
		<dc:creator>pete</dc:creator>
		<pubDate>Thu, 17 Feb 2011 17:23:20 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11608</guid>
		<description>great approach, but how could i implement rowHeight and a variable width? the items should be scaled to fits the rowHeight.</description>
		<content:encoded><![CDATA[<p>great approach, but how could i implement rowHeight and a variable width? the items should be scaled to fits the rowHeight.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nithiyananthan</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11574</link>
		<dc:creator>Nithiyananthan</dc:creator>
		<pubDate>Thu, 02 Sep 2010 05:09:52 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11574</guid>
		<description>we cant able to view the source code.
Please check this</description>
		<content:encoded><![CDATA[<p>we cant able to view the source code.<br />
Please check this</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WebTrauma</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11567</link>
		<dc:creator>WebTrauma</dc:creator>
		<pubDate>Sat, 24 Jul 2010 19:12:57 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11567</guid>
		<description>Here is a version with vertical spacing and a &#039;vertical compress&#039; horizontal alignment option for those times when you can&#039;t have white space:

package components
{
	import mx.core.ILayoutElement;
	
	import spark.components.supportClasses.GroupBase;
	import spark.layouts.supportClasses.LayoutBase;

	public class FlowLayout extends LayoutBase
	{
		//---------------------------------------------------------------
		//
		//  Class properties
		//
		//---------------------------------------------------------------
		
		//---------------------------------------------------------------
		//  horizontalGap
		//---------------------------------------------------------------
		
		private var _horizontalGap:Number = 10;
		
		public function set horizontalGap(value:Number):void
		{
			_horizontalGap = value;
			
			// We must invalidate the layout
			var layoutTarget:GroupBase = target;
			if (layoutTarget)
				layoutTarget.invalidateDisplayList();
		}
		
		//---------------------------------------------------------------
		//  verticalGap
		//---------------------------------------------------------------
		
		private var _verticalGap:Number = 20;
		
		public function set verticalGap(value:Number):void
		{
			_verticalGap = value;
			
			// We must invalidate the layout
			var layoutTarget:GroupBase = target;
			if (layoutTarget)
				layoutTarget.invalidateDisplayList();
		}
		
		//---------------------------------------------------------------
		//  verticalAlign
		//---------------------------------------------------------------
		
		private var _verticalAlign:String = &quot;bottom&quot;;
		
		public function set verticalAlign(value:String):void
		{
			_verticalAlign = value;
			
			// We must invalidate the layout
			var layoutTarget:GroupBase = target;
			if (layoutTarget)
				layoutTarget.invalidateDisplayList();
		}
		
		//---------------------------------------------------------------
		//  horizontalAlign
		//---------------------------------------------------------------
		
		private var _horizontalAlign:String = &quot;left&quot;; // center, right
		
		public function set horizontalAlign(value:String):void
		{
			if (_verticalAlign != &quot;compress&quot;)
			{
				_horizontalAlign = value;
			}
			
			// We must invalidate the layout
			var layoutTarget:GroupBase = target;
			if (layoutTarget)
				layoutTarget.invalidateDisplayList();
		}
		
		//---------------------------------------------------------------
		//
		//  Class methods
		//
		//---------------------------------------------------------------
		
		override public function updateDisplayList(containerWidth:Number,
												   containerHeight:Number):void
		{
			var element:ILayoutElement;
			var layoutTarget:GroupBase = target;
			var count:int = layoutTarget.numElements;
			var hGap:Number = _horizontalGap;
			var vGap:Number = _verticalGap;
			
			// The position for the current element
			var x:Number = 10;
			var y:Number = 0;
			var elementWidth:Number;
			var elementHeight:Number;
			var vAlign:Number = 0;
			
			switch (_verticalAlign)
			{
				case &quot;middle&quot; : vAlign = 0.5; break;
				case &quot;bottom&quot; : vAlign = 1; break;
			}
			
			// Keep track of per-row height, maximum row width
			var maxRowWidth:Number = 0;
			
			// variables used for compressed layout
			var firstRow:Boolean = true;
			var elementsPerRow:int = 1;
			
			// loop through the elements
			// while we can start a new row
			var rowStart:int = 0;
			while (rowStart &lt; count)
			{
				// The row always contains the start element
				element = useVirtualLayout ? layoutTarget.getVirtualElementAt(rowStart) :
					layoutTarget.getElementAt(rowStart);
				
				var rowWidth:Number = element.getPreferredBoundsWidth();
				var rowHeight:Number =  element.getPreferredBoundsHeight();
				
				// Find the end of the current row
				var rowEnd:int = rowStart;
				while (rowEnd + 1  containerWidth)
						break;
					// 
					if (firstRow)
					{
						elementsPerRow ++;
					}
					// 
					rowWidth += hGap + elementWidth;
					rowHeight = Math.max(rowHeight, elementHeight);
					rowEnd++;
				}
				
				x = 10;
				switch (_horizontalAlign)
				{
					case &quot;center&quot; : x = Math.round(containerWidth - rowWidth) / 2; break;
					case &quot;right&quot; : x = containerWidth - rowWidth;
				}
				
				// Keep track of the maximum row width so that we can
				// set the correct contentSize
				maxRowWidth = Math.max(maxRowWidth, x + rowWidth);
				
				// Layout all the elements within the row
				for (var i:int = rowStart; i &lt;= rowEnd; i++) 
				{
					element = useVirtualLayout ? layoutTarget.getVirtualElementAt(i) : 
						layoutTarget.getElementAt(i);
					
					// Resize the element to its preferred size by passing
					// NaN for the width and height constraints
					element.setLayoutBoundsSize(NaN, NaN);
					
					// Find out the element&#039;s dimensions sizes.
					// We do this after the element has been already resized
					// to its preferred size.
					elementWidth = element.getLayoutBoundsWidth();
					elementHeight = element.getLayoutBoundsHeight();
					
					// Calculate the position within the row
					var elementY:Number = Math.round((rowHeight - elementHeight) * vAlign);
					
					// Compress the vertical space between elements in the same column
					if (_verticalAlign == &quot;compress&quot; &amp;&amp; !firstRow)
					{
						var elementAbove:ILayoutElement = layoutTarget.getElementAt(i - elementsPerRow);
						y = elementAbove.getLayoutBoundsY() + elementAbove.getPreferredBoundsHeight() + vGap;
					}
					// Position the element
					element.setLayoutBoundsPosition(x, y + elementY + vGap);
					
					x += hGap + elementWidth;
				}
				
				// Next row will start with the first element after the current row&#039;s end
				rowStart = rowEnd + 1;
				firstRow = false;
				
				// Update the position to the beginning of the row
				x = 10;
				y += vGap + rowHeight;
			}
			
			// Set the content size which determines the scrolling limits
			// and is used by the Scroller to calculate whether to show up
			// the scrollbars when the the scroll policy is set to &quot;auto&quot;
			layoutTarget.setContentSize(maxRowWidth, y);
		}
	}
}</description>
		<content:encoded><![CDATA[<p>Here is a version with vertical spacing and a &#8216;vertical compress&#8217; horizontal alignment option for those times when you can&#8217;t have white space:</p>
<p>package components<br />
{<br />
	import mx.core.ILayoutElement;</p>
<p>	import spark.components.supportClasses.GroupBase;<br />
	import spark.layouts.supportClasses.LayoutBase;</p>
<p>	public class FlowLayout extends LayoutBase<br />
	{<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//<br />
		//  Class properties<br />
		//<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//  horizontalGap<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		private var _horizontalGap:Number = 10;</p>
<p>		public function set horizontalGap(value:Number):void<br />
		{<br />
			_horizontalGap = value;</p>
<p>			// We must invalidate the layout<br />
			var layoutTarget:GroupBase = target;<br />
			if (layoutTarget)<br />
				layoutTarget.invalidateDisplayList();<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//  verticalGap<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		private var _verticalGap:Number = 20;</p>
<p>		public function set verticalGap(value:Number):void<br />
		{<br />
			_verticalGap = value;</p>
<p>			// We must invalidate the layout<br />
			var layoutTarget:GroupBase = target;<br />
			if (layoutTarget)<br />
				layoutTarget.invalidateDisplayList();<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//  verticalAlign<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		private var _verticalAlign:String = &#8220;bottom&#8221;;</p>
<p>		public function set verticalAlign(value:String):void<br />
		{<br />
			_verticalAlign = value;</p>
<p>			// We must invalidate the layout<br />
			var layoutTarget:GroupBase = target;<br />
			if (layoutTarget)<br />
				layoutTarget.invalidateDisplayList();<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//  horizontalAlign<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		private var _horizontalAlign:String = &#8220;left&#8221;; // center, right</p>
<p>		public function set horizontalAlign(value:String):void<br />
		{<br />
			if (_verticalAlign != &#8220;compress&#8221;)<br />
			{<br />
				_horizontalAlign = value;<br />
			}</p>
<p>			// We must invalidate the layout<br />
			var layoutTarget:GroupBase = target;<br />
			if (layoutTarget)<br />
				layoutTarget.invalidateDisplayList();<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
		//<br />
		//  Class methods<br />
		//<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>		override public function updateDisplayList(containerWidth:Number,<br />
												   containerHeight:Number):void<br />
		{<br />
			var element:ILayoutElement;<br />
			var layoutTarget:GroupBase = target;<br />
			var count:int = layoutTarget.numElements;<br />
			var hGap:Number = _horizontalGap;<br />
			var vGap:Number = _verticalGap;</p>
<p>			// The position for the current element<br />
			var x:Number = 10;<br />
			var y:Number = 0;<br />
			var elementWidth:Number;<br />
			var elementHeight:Number;<br />
			var vAlign:Number = 0;</p>
<p>			switch (_verticalAlign)<br />
			{<br />
				case &#8220;middle&#8221; : vAlign = 0.5; break;<br />
				case &#8220;bottom&#8221; : vAlign = 1; break;<br />
			}</p>
<p>			// Keep track of per-row height, maximum row width<br />
			var maxRowWidth:Number = 0;</p>
<p>			// variables used for compressed layout<br />
			var firstRow:Boolean = true;<br />
			var elementsPerRow:int = 1;</p>
<p>			// loop through the elements<br />
			// while we can start a new row<br />
			var rowStart:int = 0;<br />
			while (rowStart &lt; count)<br />
			{<br />
				// The row always contains the start element<br />
				element = useVirtualLayout ? layoutTarget.getVirtualElementAt(rowStart) :<br />
					layoutTarget.getElementAt(rowStart);</p>
<p>				var rowWidth:Number = element.getPreferredBoundsWidth();<br />
				var rowHeight:Number =  element.getPreferredBoundsHeight();</p>
<p>				// Find the end of the current row<br />
				var rowEnd:int = rowStart;<br />
				while (rowEnd + 1  containerWidth)<br />
						break;<br />
					//<br />
					if (firstRow)<br />
					{<br />
						elementsPerRow ++;<br />
					}<br />
					//<br />
					rowWidth += hGap + elementWidth;<br />
					rowHeight = Math.max(rowHeight, elementHeight);<br />
					rowEnd++;<br />
				}</p>
<p>				x = 10;<br />
				switch (_horizontalAlign)<br />
				{<br />
					case &#8220;center&#8221; : x = Math.round(containerWidth &#8211; rowWidth) / 2; break;<br />
					case &#8220;right&#8221; : x = containerWidth &#8211; rowWidth;<br />
				}</p>
<p>				// Keep track of the maximum row width so that we can<br />
				// set the correct contentSize<br />
				maxRowWidth = Math.max(maxRowWidth, x + rowWidth);</p>
<p>				// Layout all the elements within the row<br />
				for (var i:int = rowStart; i &lt;= rowEnd; i++)<br />
				{<br />
					element = useVirtualLayout ? layoutTarget.getVirtualElementAt(i) :<br />
						layoutTarget.getElementAt(i);</p>
<p>					// Resize the element to its preferred size by passing<br />
					// NaN for the width and height constraints<br />
					element.setLayoutBoundsSize(NaN, NaN);</p>
<p>					// Find out the element&#039;s dimensions sizes.<br />
					// We do this after the element has been already resized<br />
					// to its preferred size.<br />
					elementWidth = element.getLayoutBoundsWidth();<br />
					elementHeight = element.getLayoutBoundsHeight();</p>
<p>					// Calculate the position within the row<br />
					var elementY:Number = Math.round((rowHeight &#8211; elementHeight) * vAlign);</p>
<p>					// Compress the vertical space between elements in the same column<br />
					if (_verticalAlign == &quot;compress&quot; &amp;&amp; !firstRow)<br />
					{<br />
						var elementAbove:ILayoutElement = layoutTarget.getElementAt(i &#8211; elementsPerRow);<br />
						y = elementAbove.getLayoutBoundsY() + elementAbove.getPreferredBoundsHeight() + vGap;<br />
					}<br />
					// Position the element<br />
					element.setLayoutBoundsPosition(x, y + elementY + vGap);</p>
<p>					x += hGap + elementWidth;<br />
				}</p>
<p>				// Next row will start with the first element after the current row&#039;s end<br />
				rowStart = rowEnd + 1;<br />
				firstRow = false;</p>
<p>				// Update the position to the beginning of the row<br />
				x = 10;<br />
				y += vGap + rowHeight;<br />
			}</p>
<p>			// Set the content size which determines the scrolling limits<br />
			// and is used by the Scroller to calculate whether to show up<br />
			// the scrollbars when the the scroll policy is set to &quot;auto&quot;<br />
			layoutTarget.setContentSize(maxRowWidth, y);<br />
		}<br />
	}<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JamesLyon</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11556</link>
		<dc:creator>JamesLyon</dc:creator>
		<pubDate>Wed, 12 May 2010 17:19:39 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11556</guid>
		<description>I noticed a peculiar measurement bug when I decided to use this on a DropDownList skin&#039;s datagroup.

I don&#039;t suppose anyone else has run into it.  But, if you can tell me why a VerticalLayout wouldn&#039;t have this problem when the FlowLayout does, I can try to work a fix into it.</description>
		<content:encoded><![CDATA[<p>I noticed a peculiar measurement bug when I decided to use this on a DropDownList skin&#8217;s datagroup.</p>
<p>I don&#8217;t suppose anyone else has run into it.  But, if you can tell me why a VerticalLayout wouldn&#8217;t have this problem when the FlowLayout does, I can try to work a fix into it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RocketMonkey</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11484</link>
		<dc:creator>RocketMonkey</dc:creator>
		<pubDate>Thu, 28 Jan 2010 11:27:44 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11484</guid>
		<description>Posted: http://forums.adobe.com/thread/565055</description>
		<content:encoded><![CDATA[<p>Posted: <a href="http://forums.adobe.com/thread/565055" rel="nofollow">http://forums.adobe.com/thread/565055</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RocketMonkey</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11483</link>
		<dc:creator>RocketMonkey</dc:creator>
		<pubDate>Thu, 28 Jan 2010 10:42:16 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11483</guid>
		<description>Hi Evtim, I will do thanks</description>
		<content:encoded><![CDATA[<p>Hi Evtim, I will do thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Evtim</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11482</link>
		<dc:creator>Evtim</dc:creator>
		<pubDate>Thu, 28 Jan 2010 06:53:31 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11482</guid>
		<description>Hi Tyron,

Perhaps you need to set the gaps to zero (they default to 6)?
&lt;s:TileLayout horizontalGap=&quot;0&quot; verticalGap=&quot;0&quot;...
If the issue is somewhere else, I&#039;d encourage you to post at the Flex SDK forums with a small sample app, so we can take a look at it (http://forums.adobe.com/community/labs/gumbo/).

Thanks,
Evtim</description>
		<content:encoded><![CDATA[<p>Hi Tyron,</p>
<p>Perhaps you need to set the gaps to zero (they default to 6)?<br />
<s:tilelayout horizontalGap="0" verticalGap="0"...<br />
If the issue is somewhere else, I'd encourage you to post at the Flex SDK forums with a small sample app, so we can take a look at it (<a href="http://forums.adobe.com/community/labs/gumbo/" rel="nofollow">http://forums.adobe.com/community/labs/gumbo/).</p>
<p>Thanks,<br />
Evtim</s:tilelayout></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RocketMonkey</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11481</link>
		<dc:creator>RocketMonkey</dc:creator>
		<pubDate>Tue, 26 Jan 2010 09:12:58 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11481</guid>
		<description>Hi Jochen,

I am having different issues with the TileLayout, I have a few list&#039;s ontop of each other and there is a huge gap between each list as if the content in the list is not measuring the height correctly, this only happens when the list Orientation is TileOrientation.Rows, have you had the same problems?

Thanks 

(using SDK build 10485)</description>
		<content:encoded><![CDATA[<p>Hi Jochen,</p>
<p>I am having different issues with the TileLayout, I have a few list&#8217;s ontop of each other and there is a huge gap between each list as if the content in the list is not measuring the height correctly, this only happens when the list Orientation is TileOrientation.Rows, have you had the same problems?</p>
<p>Thanks </p>
<p>(using SDK build 10485)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Evtim</title>
		<link>http://evtimmy.com/2009/06/flowlayout-part-2-gap-verticalalign-and-scrolling/comment-page-1/#comment-11442</link>
		<dc:creator>Evtim</dc:creator>
		<pubDate>Wed, 16 Dec 2009 07:21:19 +0000</pubDate>
		<guid isPermaLink="false">http://evtimmy.com/?p=80#comment-11442</guid>
		<description>Hi Jochen,

You are right, a custom layout needs to provide support for drag and drop. In general the layout needs to calculate the index for the drop, the positioning and sizing of the drop indicator and whether there should be any drag scrolling. Take a look at these three protected methods in LayoutBase: calculateDropIndex(), calculateDropIndicatorBounds(), calculateDragScrollDelta(). Typically a custom layout would need to override these three methods. 
You can find more detailed explanation in the publicly posted List Drag and Drop spec &lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexsdk/List+DragDrop+Specification&quot; rel=&quot;nofollow&quot;&gt;http://opensource.adobe.com/wiki/display/flexsdk/List+DragDrop+Specification&lt;/a&gt;.

-Evtim</description>
		<content:encoded><![CDATA[<p>Hi Jochen,</p>
<p>You are right, a custom layout needs to provide support for drag and drop. In general the layout needs to calculate the index for the drop, the positioning and sizing of the drop indicator and whether there should be any drag scrolling. Take a look at these three protected methods in LayoutBase: calculateDropIndex(), calculateDropIndicatorBounds(), calculateDragScrollDelta(). Typically a custom layout would need to override these three methods.<br />
You can find more detailed explanation in the publicly posted List Drag and Drop spec <a href="http://opensource.adobe.com/wiki/display/flexsdk/List+DragDrop+Specification" rel="nofollow">http://opensource.adobe.com/wiki/display/flexsdk/List+DragDrop+Specification</a>.</p>
<p>-Evtim</p>
]]></content:encoded>
	</item>
</channel>
</rss>

