am dc3fc3dc: Merge "LayoutLib: fix the background of title/action bars." into honeycomb

* commit 'dc3fc3dc2717461113a2963c224cb190457599d8':
  LayoutLib: fix the background of title/action bars.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
index 70c507c..771d89a 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
@@ -65,7 +65,6 @@
         super(context);
         setOrientation(LinearLayout.HORIZONTAL);
         setGravity(Gravity.CENTER_VERTICAL);
-        setBackgroundColor(0xFF000000);
 
         LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
                 Context.LAYOUT_INFLATER_SERVICE);
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/PhoneSystemBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/PhoneSystemBar.java
index e3022b4..04d06e4 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/PhoneSystemBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/PhoneSystemBar.java
@@ -33,6 +33,7 @@
         super(context, density, "/bars/tablet_system_bar.xml");
 
         setGravity(mGravity | Gravity.RIGHT);
+        setBackgroundColor(0xFF000000);
 
         // Cannot access the inside items through id because no R.id values have been
         // created for them.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/TabletSystemBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/TabletSystemBar.java
index db1efdb..5ca68fa 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/TabletSystemBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/TabletSystemBar.java
@@ -31,6 +31,8 @@
     public TabletSystemBar(Context context, Density density) throws XmlPullParserException {
         super(context, density, "/bars/tablet_system_bar.xml");
 
+        setBackgroundColor(0xFF000000);
+
         // Cannot access the inside items through id because no R.id values have been
         // created for them.
         // We do know the order though.
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 3e5127e..136b205 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
@@ -204,8 +204,11 @@
             SessionParams params = getParams();
             BridgeContext context = getContext();
 
+            // the view group that receives the window background.
+            ViewGroup backgroundView = null;
+
             if (mWindowIsFloating || params.isForceNoDecor()) {
-                mViewRoot = mContentRoot = new FrameLayout(context);
+                backgroundView = mViewRoot = mContentRoot = new FrameLayout(context);
             } else {
                 /*
                  * we're creating the following layout
@@ -213,10 +216,13 @@
                    +-------------------------------------------------+
                    | System bar (only in phone UI)                   |
                    +-------------------------------------------------+
-                   | Title/Action bar (optional)                     |
-                   +-------------------------------------------------+
-                   | Content, vertical extending                     |
-                   |                                                 |
+                   | (Layout with background drawable)               |
+                   | +---------------------------------------------+ |
+                   | | Title/Action bar (optional)                 | |
+                   | +---------------------------------------------+ |
+                   | | Content, vertical extending                 | |
+                   | |                                             | |
+                   | +---------------------------------------------+ |
                    +-------------------------------------------------+
                    | System bar (only in tablet UI)                  |
                    +-------------------------------------------------+
@@ -241,6 +247,16 @@
                     }
                 }
 
+                LinearLayout backgroundLayout = new LinearLayout(context);
+                backgroundView = backgroundLayout;
+                backgroundLayout.setOrientation(LinearLayout.VERTICAL);
+                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
+                        LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+                layoutParams.weight = 1;
+                backgroundLayout.setLayoutParams(layoutParams);
+                topLayout.addView(backgroundLayout);
+
+
                 // if the theme says no title/action bar, then the size will be 0
                 if (mActionBarSize > 0) {
                     try {
@@ -250,7 +266,7 @@
                         actionBar.setLayoutParams(
                                 new LinearLayout.LayoutParams(
                                         LayoutParams.MATCH_PARENT, mActionBarSize));
-                        topLayout.addView(actionBar);
+                        backgroundLayout.addView(actionBar);
                     } catch (XmlPullParserException e) {
 
                     }
@@ -261,7 +277,7 @@
                         titleBar.setLayoutParams(
                                 new LinearLayout.LayoutParams(
                                         LayoutParams.MATCH_PARENT, mTitleBarSize));
-                        topLayout.addView(titleBar);
+                        backgroundLayout.addView(titleBar);
                     } catch (XmlPullParserException e) {
 
                     }
@@ -270,11 +286,11 @@
 
                 // content frame
                 mContentRoot = new FrameLayout(context);
-                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
+                layoutParams = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                 layoutParams.weight = 1;
                 mContentRoot.setLayoutParams(layoutParams);
-                topLayout.addView(mContentRoot);
+                backgroundLayout.addView(mContentRoot);
 
                 if (mSystemBarSize > 0) {
                     // system bar
@@ -289,7 +305,6 @@
 
                     }
                 }
-
             }
 
 
@@ -314,9 +329,9 @@
             postInflateProcess(view, params.getProjectCallback());
 
             // get the background drawable
-            if (mWindowBackground != null) {
+            if (mWindowBackground != null && backgroundView != null) {
                 Drawable d = ResourceHelper.getDrawable(mWindowBackground, context);
-                mContentRoot.setBackgroundDrawable(d);
+                backgroundView.setBackgroundDrawable(d);
             }
 
             return SUCCESS.createResult();