Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7370ab5c authored by Xavier Ducrohet's avatar Xavier Ducrohet Committed by Android (Google) Code Review
Browse files

Merge "LayoutLib: use the new expand API."

parents 8d757200 fb25cae1
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.layoutlib.api.SceneParams;
import com.android.layoutlib.api.SceneResult;
import com.android.layoutlib.api.ViewInfo;
import com.android.layoutlib.api.IDensityBasedResourceValue.Density;
import com.android.layoutlib.api.SceneParams.RenderingMode;
import com.android.layoutlib.bridge.BridgeConstants;
import com.android.layoutlib.bridge.android.BridgeContext;
import com.android.layoutlib.bridge.android.BridgeInflater;
@@ -259,24 +260,34 @@ public class LayoutSceneImpl {
            int renderScreenWidth = mParams.getScreenWidth();
            int renderScreenHeight = mParams.getScreenHeight();

            if (mParams.getRenderFullSize()) {
            RenderingMode renderingMode = mParams.getRenderingMode();

            if (renderingMode != RenderingMode.NORMAL) {
                // measure the full size needed by the layout.
                w_spec = MeasureSpec.makeMeasureSpec(renderScreenWidth,
                        MeasureSpec.UNSPECIFIED); // this lets us know the actual needed size
                        renderingMode.isHorizExpand() ?
                                MeasureSpec.UNSPECIFIED // this lets us know the actual needed size
                                : MeasureSpec.EXACTLY);
                h_spec = MeasureSpec.makeMeasureSpec(renderScreenHeight - mScreenOffset,
                        MeasureSpec.UNSPECIFIED); // this lets us know the actual needed size
                        renderingMode.isVertExpand() ?
                                MeasureSpec.UNSPECIFIED // this lets us know the actual needed size
                                : MeasureSpec.EXACTLY);
                mViewRoot.measure(w_spec, h_spec);

                if (renderingMode.isHorizExpand()) {
                    int neededWidth = mViewRoot.getChildAt(0).getMeasuredWidth();
                    if (neededWidth > renderScreenWidth) {
                        renderScreenWidth = neededWidth;
                    }
                }

                if (renderingMode.isVertExpand()) {
                    int neededHeight = mViewRoot.getChildAt(0).getMeasuredHeight();
                    if (neededHeight > renderScreenHeight - mScreenOffset) {
                        renderScreenHeight = neededHeight + mScreenOffset;
                    }
                }
            }

            // remeasure with the size we need
            // This must always be done before the call to layout