OSDN Git Service

Fix bug 5258435 - ActionBar.setBackgroundDrawable
authorAdam Powell <adamp@google.com>
Wed, 7 Sep 2011 21:54:32 +0000 (14:54 -0700)
committerAdam Powell <adamp@google.com>
Wed, 7 Sep 2011 21:55:47 +0000 (14:55 -0700)
Fix this call to work properly and add methods for setting
split/stacked bar backgrounds to match existing styleable elements.

Change-Id: I8c6b1c598af1110f84a9098683d8e0226daf2e27

api/current.txt
core/java/android/app/ActionBar.java
core/java/com/android/internal/app/ActionBarImpl.java
core/java/com/android/internal/widget/ActionBarContainer.java

index cc6cce9..d7ed27c 100644 (file)
@@ -2452,6 +2452,8 @@ package android.app {
     method public abstract void setLogo(android.graphics.drawable.Drawable);
     method public abstract void setNavigationMode(int);
     method public abstract void setSelectedNavigationItem(int);
+    method public abstract void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public abstract void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
     method public abstract void setSubtitle(java.lang.CharSequence);
     method public abstract void setSubtitle(int);
     method public abstract void setTitle(java.lang.CharSequence);
index 46dc5ff..fe3b931 100644 (file)
@@ -402,13 +402,33 @@ public abstract class ActionBar {
     public abstract void setDisplayShowCustomEnabled(boolean showCustom);
 
     /**
-     * Set the ActionBar's background.
+     * Set the ActionBar's background. This will be used for the primary
+     * action bar.
      * 
      * @param d Background drawable
+     * @see #setStackedBackgroundDrawable(Drawable)
+     * @see #setSplitBackgroundDrawable(Drawable)
      */
     public abstract void setBackgroundDrawable(Drawable d);
 
     /**
+     * Set the ActionBar's stacked background. This will appear
+     * in the second row/stacked bar on some devices and configurations.
+     *
+     * @param d Background drawable for the stacked row
+     */
+    public abstract void setStackedBackgroundDrawable(Drawable d);
+
+    /**
+     * Set the ActionBar's split background. This will appear in
+     * the split action bar containing menu-provided action buttons
+     * on some devices and configurations.
+     *
+     * @param d Background drawable for the split bar
+     */
+    public abstract void setSplitBackgroundDrawable(Drawable d);
+
+    /**
      * @return The current custom view.
      */
     public abstract View getCustomView();
index 90d19fd..ccca22e 100644 (file)
@@ -346,7 +346,17 @@ public class ActionBarImpl extends ActionBar {
     }
 
     public void setBackgroundDrawable(Drawable d) {
-        mContainerView.setBackgroundDrawable(d);
+        mContainerView.setPrimaryBackground(d);
+    }
+
+    public void setStackedBackgroundDrawable(Drawable d) {
+        mContainerView.setStackedBackground(d);
+    }
+
+    public void setSplitBackgroundDrawable(Drawable d) {
+        if (mSplitView != null) {
+            mSplitView.setSplitBackground(d);
+        }
     }
 
     public View getCustomView() {
index fd9ee08..f95de62 100644 (file)
@@ -76,6 +76,21 @@ public class ActionBarContainer extends FrameLayout {
         mActionBarView = (ActionBarView) findViewById(com.android.internal.R.id.action_bar);
     }
 
+    public void setPrimaryBackground(Drawable bg) {
+        mBackground = bg;
+        invalidate();
+    }
+
+    public void setStackedBackground(Drawable bg) {
+        mStackedBackground = bg;
+        invalidate();
+    }
+
+    public void setSplitBackground(Drawable bg) {
+        mSplitBackground = bg;
+        invalidate();
+    }
+
     /**
      * Set the action bar into a "transitioning" state. While transitioning
      * the bar will block focus and touch from all of its descendants. This