Merge "Fix bug 5258435 - ActionBar.setBackgroundDrawable"

This commit is contained in:
Adam Powell
2011-09-07 15:31:08 -07:00
committed by Android (Google) Code Review
4 changed files with 49 additions and 2 deletions

View File

@@ -2452,6 +2452,8 @@ package android.app {
method public abstract void setLogo(android.graphics.drawable.Drawable); method public abstract void setLogo(android.graphics.drawable.Drawable);
method public abstract void setNavigationMode(int); method public abstract void setNavigationMode(int);
method public abstract void setSelectedNavigationItem(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(java.lang.CharSequence);
method public abstract void setSubtitle(int); method public abstract void setSubtitle(int);
method public abstract void setTitle(java.lang.CharSequence); method public abstract void setTitle(java.lang.CharSequence);

View File

@@ -402,12 +402,32 @@ public abstract class ActionBar {
public abstract void setDisplayShowCustomEnabled(boolean showCustom); 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 * @param d Background drawable
* @see #setStackedBackgroundDrawable(Drawable)
* @see #setSplitBackgroundDrawable(Drawable)
*/ */
public abstract void setBackgroundDrawable(Drawable d); 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. * @return The current custom view.
*/ */

View File

@@ -346,7 +346,17 @@ public class ActionBarImpl extends ActionBar {
} }
public void setBackgroundDrawable(Drawable d) { 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() { public View getCustomView() {

View File

@@ -76,6 +76,21 @@ public class ActionBarContainer extends FrameLayout {
mActionBarView = (ActionBarView) findViewById(com.android.internal.R.id.action_bar); 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 * Set the action bar into a "transitioning" state. While transitioning
* the bar will block focus and touch from all of its descendants. This * the bar will block focus and touch from all of its descendants. This