From 33758ef8c98efb669c65eb9404b99ee5df09c6b5 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Wed, 2 Feb 2011 18:37:59 -0800 Subject: [PATCH] LayoutLib: Fix some rendering issues Change-Id: I662a39a783de5bc7f3063f46cedaab11c7e6496e --- .../layoutlib/bridge/android/BridgeContext.java | 3 +++ .../layoutlib/bridge/impl/RenderSessionImpl.java | 11 ++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index 4220dddbb75fc..bb4c56ca6445d 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -413,6 +413,9 @@ public final class BridgeContext extends Activity { ResourceValue item = mRenderResources.findResValue(customStyle, false /*forceFrameworkOnly*/); + // resolve it in case it links to something else + item = mRenderResources.resolveResValue(item); + if (item instanceof StyleResourceValue) { defStyleValues = (StyleResourceValue)item; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java index fa046978da2e4..c8ad1d6c968ae 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java @@ -361,9 +361,6 @@ public class RenderSessionImpl extends FrameworkResourceIdProvider { View view = mInflater.inflate(mBlockParser, mViewRoot); - // post-inflate process. For now this supports TabHost/TabWidget - postInflateProcess(view, mParams.getProjectCallback()); - Fragment_Delegate.setProjectCallback(null); // set the AttachInfo on the root view. @@ -375,6 +372,9 @@ public class RenderSessionImpl extends FrameworkResourceIdProvider { info.mHardwareAccelerated = false; mViewRoot.dispatchAttachedToWindow(info, 0); + // post-inflate process. For now this supports TabHost/TabWidget + postInflateProcess(view, mParams.getProjectCallback()); + // get the background drawable if (mWindowBackground != null) { Drawable d = ResourceHelper.getDrawable(mWindowBackground, @@ -461,13 +461,14 @@ public class RenderSessionImpl extends FrameworkResourceIdProvider { // remeasure with the size we need // This must always be done before the call to layout w_spec = MeasureSpec.makeMeasureSpec(mMeasuredScreenWidth, MeasureSpec.EXACTLY); - h_spec = MeasureSpec.makeMeasureSpec(mMeasuredScreenHeight, - MeasureSpec.EXACTLY); + h_spec = MeasureSpec.makeMeasureSpec(mMeasuredScreenHeight, MeasureSpec.EXACTLY); mViewRoot.measure(w_spec, h_spec); // now do the layout. mViewRoot.layout(0, 0, mMeasuredScreenWidth, mMeasuredScreenHeight); + mViewRoot.mAttachInfo.mTreeObserver.dispatchOnPreDraw(); + // draw the views // create the BufferedImage into which the layout will be rendered. boolean newImage = false;