         }
     }
 	
-	/**
-	 *  @private
-	 */
-	override public function validateEstimatedSizesOfChildren():void
-	{
-		actionBar.setEstimatedSize(estimatedWidth, NaN);
-		contentGroup.setEstimatedSize(estimatedWidth, NaN);
-	}
+    /**
+     *  @private 
+     */
+    override mx_internal function validateEstimatedSizesOfChild(child:ILayoutElement):void
+    {
+        var cw:Number;
+        var ch:Number;
+        var c:Number;
+        var oldcw:Number = child.estimatedWidth;
+        var oldch:Number = child.estimatedHeight;
+        // the child actionBar and contentGroup are
+        // constrained to the width of the skin, but their
+        // height is not constrained
+        cw = estimatedWidth;
+        if (isNaN(cw) && !isNaN(explicitWidth))
+            cw = explicitWidth;
+        ch = NaN;
+        
+        child.setEstimatedSize(cw, ch);
+        if (child is ILayoutManagerContainerClient)
+        {
+            var sameWidth:Boolean = isNaN(cw) && isNaN(oldcw) || cw == oldcw;
+            var sameHeight:Boolean = isNaN(ch) && isNaN(oldch) || ch == oldch;
+            if (!(sameHeight && sameWidth))
+            {
+                if (child is IContainerInvalidating)
+                    IContainerInvalidating(child).invalidateEstimatedSizesOfChildren();
+                ILayoutManagerContainerClient(child).validateEstimatedSizesOfChildren();
+            }
+        }
+    }
+    
     
     /**
      *  @private 

        var actionBarHeight:Number = 0;
        
        // The action bar is always placed at 0,0 and stretches the entire
        // width of the navigator
        if (actionBar.includeInLayout)
        {
            actionBarHeight = Math.min(actionBar.getPreferredBoundsHeight(), unscaledHeight);

        // If the hostComponent is in overlay mode, the contentGroup extends
        // the entire bounds of the navigator and the alpha for the action 
        // bar changes
        // If this changes, also update validateEstimatedSizesOfChild
        if (currentState == "portraitAndOverlay" || currentState == "landscapeAndOverlay")
        {
            // FIXME (chiedozi): Update when XD spec is written
