summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-08-21 13:26:19 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-08-21 13:26:19 -0700
commit51afbd308dff8bd7accf5510e60367107d4c40a1 (patch)
tree3e13d3a5941bad584eb2ecd58c50a62b65891acd
parentdd03c6135f91df6d5d9e71de1487520dc3345742 (diff)
parentad013fae0db2864ad13631a44d26bacafc36f861 (diff)
downloadframeworks_base-51afbd308dff8bd7accf5510e60367107d4c40a1.zip
frameworks_base-51afbd308dff8bd7accf5510e60367107d4c40a1.tar.gz
frameworks_base-51afbd308dff8bd7accf5510e60367107d4c40a1.tar.bz2
Merge change 22308 into eclair
* changes: Replace fullHeight support by fullSize (height and width)
-rw-r--r--tools/layoutlib/api/src/com/android/layoutlib/api/ILayoutBridge.java7
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java20
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);