summaryrefslogtreecommitdiff
path: root/core/java/android/widget/ActionMenuView.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-07-10 16:15:01 -0700
committerAlan Viverette <alanv@google.com>2014-07-10 16:15:35 -0700
commit3d0f21dab8d891b9aebdd5277348d549eeb843e6 (patch)
tree76281fb22aa8bd5e9097353dbc0cc8b01a4b7312 /core/java/android/widget/ActionMenuView.java
parent2db72ad45b0c4d91f0d009c6d98eb7fb5231e1d9 (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.java44
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);
}