diff options
| author | Alan Viverette <alanv@google.com> | 2014-07-10 16:15:01 -0700 |
|---|---|---|
| committer | Alan Viverette <alanv@google.com> | 2014-07-10 16:15:35 -0700 |
| commit | 3d0f21dab8d891b9aebdd5277348d549eeb843e6 (patch) | |
| tree | 76281fb22aa8bd5e9097353dbc0cc8b01a4b7312 /core/java/android/widget/ActionMenuView.java | |
| parent | 2db72ad45b0c4d91f0d009c6d98eb7fb5231e1d9 (diff) | |
API for inflating action bar menus against a different theme
BUG: 16162344
Change-Id: I5bf9f133de56a1830028bca6326cc2c50888a052
Diffstat (limited to 'core/java/android/widget/ActionMenuView.java')
| -rw-r--r-- | core/java/android/widget/ActionMenuView.java | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/core/java/android/widget/ActionMenuView.java b/core/java/android/widget/ActionMenuView.java index acee59296f5c..96abf519d933 100644 --- a/core/java/android/widget/ActionMenuView.java +++ b/core/java/android/widget/ActionMenuView.java @@ -18,6 +18,7 @@ package android.widget; import android.content.Context; import android.content.res.Configuration; import android.util.AttributeSet; +import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; @@ -28,7 +29,6 @@ import android.view.accessibility.AccessibilityEvent; import com.android.internal.view.menu.ActionMenuItemView; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; -import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuView; /** @@ -45,6 +45,12 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo private MenuBuilder mMenu; + /** Context against which to inflate popup menus. */ + private Context mPopupContext; + + /** Theme resource against which to inflate popup menus. */ + private int mPopupTheme; + private boolean mReserveOverflow; private ActionMenuPresenter mPresenter; private boolean mFormatItems; @@ -64,9 +70,41 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo final float density = context.getResources().getDisplayMetrics().density; mMinCellSize = (int) (MIN_CELL_SIZE * density); mGeneratedItemPadding = (int) (GENERATED_ITEM_PADDING * density); + mPopupContext = context; + mPopupTheme = 0; } - /** @hide */ + /** + * Specifies the theme to use when inflating popup menus. By default, uses + * the same theme as the action menu view itself. + * + * @param resId theme used to inflate popup menus + * @see #getPopupTheme() + */ + public void setPopupTheme(int resId) { + if (mPopupTheme != resId) { + mPopupTheme = resId; + if (resId == 0) { + mPopupContext = mContext; + } else { + mPopupContext = new ContextThemeWrapper(mContext, resId); + } + } + } + + /** + * @return resource identifier of the theme used to inflate popup menus, or + * 0 if menus are inflated against the action menu view theme + * @see #setPopupTheme(int) + */ + public int getPopupTheme() { + return mPopupTheme; + } + + /** + * @param presenter Menu presenter used to display popup menu + * @hide + */ public void setPresenter(ActionMenuPresenter presenter) { mPresenter = presenter; mPresenter.setMenuView(this); @@ -571,7 +609,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo mMenu.setCallback(new MenuBuilderCallback()); mPresenter = new ActionMenuPresenter(context); mPresenter.setCallback(new ActionMenuPresenterCallback()); - mMenu.addMenuPresenter(mPresenter); + mMenu.addMenuPresenter(mPresenter, mPopupContext); mPresenter.setMenuView(this); } |
