diff options
author | Xavier Ducrohet <xav@android.com> | 2009-08-21 12:55:59 -0700 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2009-08-21 12:55:59 -0700 |
commit | ad013fae0db2864ad13631a44d26bacafc36f861 (patch) | |
tree | 1de6842cd122e5786a396331b53b1954ee4f0b17 /tools/layoutlib | |
parent | 3be63c09309b21c01b535271625d4c39045690e5 (diff) | |
download | frameworks_base-ad013fae0db2864ad13631a44d26bacafc36f861.zip frameworks_base-ad013fae0db2864ad13631a44d26bacafc36f861.tar.gz frameworks_base-ad013fae0db2864ad13631a44d26bacafc36f861.tar.bz2 |
Replace fullHeight support by fullSize (height and width)
This is useful for linearlayout in horizontal mode.
Diffstat (limited to 'tools/layoutlib')
-rw-r--r-- | tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java | 7 | ||||
-rw-r--r-- | tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java | 20 |
2 files changed, 16 insertions, 11 deletions
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 @@ public interface ILayoutBridge { * @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 @@ public interface ILayoutBridge { */ 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 @@ public final class Bridge implements ILayoutBridge { 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 @@ public final class Bridge implements ILayoutBridge { * @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 @@ public final class Bridge implements ILayoutBridge { } // 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 @@ public final class Bridge implements ILayoutBridge { // 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); |