From f203e0a44ef7578c080d63424820fb5a94a4e92f Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Tue, 6 Mar 2012 17:40:12 -0800 Subject: 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 --- .../internal/view/menu/ActionMenuPresenter.java | 6 +++--- .../com/android/internal/widget/ActionBarView.java | 18 ++++++++++++++++++ 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); } } -- cgit v1.2.3-59-g8ed1b