Replace fullHeight support by fullSize (height and width)

This is useful for linearlayout in horizontal mode.
diff --git a/tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java b/tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java
index b069aad..c562650 100644
--- a/tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java
+++ b/tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java
@@ -70,9 +70,8 @@
      * @param projectKey An Object identifying the project. This is used for the cache mechanism.
      * @param screenWidth the screen width
      * @param screenHeight the screen height
-     * @param renderFullHeight if true, the rendering will render the full height needed by the
-     * layout. If the layout needs less than <var>screenHeight</var> then the rendering will
-     * use <var>screenHeight</var> as the height.
+     * @param renderFullSize if true, the rendering will render the full size needed by the
+     * layout. This size is never smaller than <var>screenWidth</var> x <var>screenHeight</var>.
      * @param density the density factor for the screen.
      * @param xdpi the screen actual dpi in X
      * @param ydpi the screen actual dpi in Y
@@ -94,7 +93,7 @@
      */
     ILayoutResult computeLayout(IXmlPullParser layoutDescription,
             Object projectKey,
-            int screenWidth, int screenHeight, boolean renderFullHeight,
+            int screenWidth, int screenHeight, boolean renderFullSize,
             int density, float xdpi, float ydpi,
             String themeName, boolean isProjectTheme,
             Map<String, Map<String, IResourceValue>> projectResources,
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
index 02804e8..55fe4ac 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
@@ -323,7 +323,7 @@
             Map<String, Map<String, IResourceValue>> frameworkResources,
             IProjectCallback customViewLoader, ILayoutLog logger) {
         return computeLayout(layoutDescription, projectKey,
-                screenWidth, screenHeight, false /* renderFullHeight */,
+                screenWidth, screenHeight, false /* renderFullSize */,
                 density, xdpi, ydpi, themeName, isProjectTheme,
                 projectResources, frameworkResources, customViewLoader, logger);
     }
@@ -333,7 +333,7 @@
      * @see com.android.layoutlib.api.ILayoutBridge#computeLayout(com.android.layoutlib.api.IXmlPullParser, java.lang.Object, int, int, boolean, int, float, float, java.lang.String, boolean, java.util.Map, java.util.Map, com.android.layoutlib.api.IProjectCallback, com.android.layoutlib.api.ILayoutLog)
      */
     public ILayoutResult computeLayout(IXmlPullParser layoutDescription, Object projectKey,
-            int screenWidth, int screenHeight, boolean renderFullHeight,
+            int screenWidth, int screenHeight, boolean renderFullSize,
             int density, float xdpi, float ydpi,
             String themeName, boolean isProjectTheme,
             Map<String, Map<String, IResourceValue>> projectResources,
@@ -412,17 +412,22 @@
             }
 
             // measure the views
-            int w_spec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY);
-            int h_spec;
+            int w_spec, h_spec;
 
-            if (renderFullHeight) {
-                // measure the full height needed by the layout.
+            if (renderFullSize) {
+                // measure the full size needed by the layout.
+                w_spec = MeasureSpec.makeMeasureSpec(screenWidth,
+                        MeasureSpec.UNSPECIFIED); // this lets us know the actual needed size
                 h_spec = MeasureSpec.makeMeasureSpec(screenHeight - screenOffset,
                         MeasureSpec.UNSPECIFIED); // this lets us know the actual needed size
                 view.measure(w_spec, h_spec);
 
-                int neededHeight = root.getChildAt(0).getMeasuredHeight();
+                int neededWidth = root.getChildAt(0).getMeasuredWidth();
+                if (neededWidth > screenWidth) {
+                    screenWidth = neededWidth;
+                }
 
+                int neededHeight = root.getChildAt(0).getMeasuredHeight();
                 if (neededHeight > screenHeight - screenOffset) {
                     screenHeight = neededHeight + screenOffset;
                 }
@@ -430,6 +435,7 @@
 
             // remeasure with only the size we need
             // This must always be done before the call to layout
+            w_spec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY);
             h_spec = MeasureSpec.makeMeasureSpec(screenHeight - screenOffset,
                     MeasureSpec.EXACTLY);
             view.measure(w_spec, h_spec);