         if (!layoutTarget)
             return;
             
-        updateActualValues(layoutTarget.explicitWidth, layoutTarget.explicitHeight);
+        var cw:Number = !isNaN(layoutTarget.explicitWidth) ? layoutTarget.explicitWidth : 
+                                                                layoutTarget.estimatedWidth;
+        var ch:Number = !isNaN(layoutTarget.explicitHeight) ? layoutTarget.explicitHeight : 
+            layoutTarget.estimatedHeight;
+        updateActualValues(cw, ch);
 
         // For measure, any explicit overrides for rowCount and columnCount take precedence
         var columnCount:int = _requestedColumnCount != -1 ? Math.max(1, _requestedColumnCount) : _columnCount;

    {
        if (!elt || !elt.includeInLayout)
            return;
        var w:Number = elt.getPreferredBoundsWidth();
        var h:Number = elt.getPreferredBoundsHeight();
        _tileWidthCached = isNaN(_tileWidthCached) ? w : Math.max(w, _tileWidthCached);


package spark.layouts
{
import flash.geom.Point;
import flash.geom.Rectangle;

import mx.core.FlexVersion;
import mx.core.IFlexModuleFactory;
import mx.core.ILayoutElement;
import mx.core.IVisualElement;
import mx.core.mx_internal;
import mx.core.UIComponentGlobals;
import mx.events.PropertyChangeEvent;
import mx.managers.ILayoutManagerClient;

import spark.components.supportClasses.GroupBase;
import spark.core.NavigationUnit;
import spark.layouts.supportClasses.DropLocation;
import spark.layouts.supportClasses.LayoutBase;

use namespace mx_internal;

/**
 *  The TileLayout class arranges layout elements in columns and rows
