Fix bug 5258435 - ActionBar.setBackgroundDrawable

Fix this call to work properly and add methods for setting
split/stacked bar backgrounds to match existing styleable elements.

Change-Id: I8c6b1c598af1110f84a9098683d8e0226daf2e27
This commit is contained in:
Adam Powell
2011-09-07 14:54:32 -07:00
parent 727e6ba5df
commit f88b915567
4 changed files with 49 additions and 2 deletions

View File

@ -402,12 +402,32 @@ 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.
*/

View 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() {

View 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