summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2012-03-06 17:40:12 -0800
committer Adam Powell <adamp@google.com> 2012-03-06 17:42:47 -0800
commitf203e0a44ef7578c080d63424820fb5a94a4e92f (patch)
tree653dd245b09e36e90a878491013cda02cf64e990
parent75d022af1f24cf2d8a7551183ea5bbe943d25d21 (diff)
Fix some action bar menu layout bugs around config changes
Bug 5712010 Fix cases where the transition between split/standard action bar menu presentation wasn't happening properly for windows in activities that handle their own config/orientation changes. Change-Id: I7168555e09c9ed448afb8619fd6f0e1466695365
-rw-r--r--core/java/com/android/internal/view/menu/ActionMenuPresenter.java6
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java18
2 files changed, 21 insertions, 3 deletions
diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
index 530809b869c3..dca45a9a9b64 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
@@ -116,9 +116,9 @@ public class ActionMenuPresenter extends BaseMenuPresenter
if (!mMaxItemsSet) {
mMaxItems = mContext.getResources().getInteger(
com.android.internal.R.integer.max_action_buttons);
- if (mMenu != null) {
- mMenu.onItemsChanged(true);
- }
+ }
+ if (mMenu != null) {
+ mMenu.onItemsChanged(true);
}
}
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 2f325bf74e52..8c054590ee95 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -324,13 +324,31 @@ public class ActionBarView extends AbsActionBarView {
if (mSplitView != null) {
mSplitView.addView(mMenuView);
}
+ mMenuView.getLayoutParams().width = LayoutParams.MATCH_PARENT;
} else {
addView(mMenuView);
+ mMenuView.getLayoutParams().width = LayoutParams.WRAP_CONTENT;
}
+ mMenuView.requestLayout();
}
if (mSplitView != null) {
mSplitView.setVisibility(splitActionBar ? VISIBLE : GONE);
}
+
+ if (mActionMenuPresenter != null) {
+ if (!splitActionBar) {
+ mActionMenuPresenter.setExpandedActionViewsExclusive(
+ getResources().getBoolean(
+ com.android.internal.R.bool.action_bar_expanded_action_views_exclusive));
+ } else {
+ mActionMenuPresenter.setExpandedActionViewsExclusive(false);
+ // Allow full screen width in split mode.
+ mActionMenuPresenter.setWidthLimit(
+ getContext().getResources().getDisplayMetrics().widthPixels, true);
+ // No limit to the item count; use whatever will fit.
+ mActionMenuPresenter.setItemLimit(Integer.MAX_VALUE);
+ }
+ }
super.setSplitActionBar(splitActionBar);
}
}