From b187cd9c54f0100c0fb47c354cdecad29ca7c0ae Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Wed, 20 Jul 2011 14:17:56 -0700 Subject: [PATCH] Fix bug 5038368 - Rules for collapsing action views. Make collapsing action views exclusive on small screens with unsplit action bars. Change-Id: I11cc220acc7b6acddd25f2500404b47bfb405d5c --- .../internal/view/menu/ActionMenuPresenter.java | 10 ++++++++++ .../com/android/internal/widget/ActionBarView.java | 4 ++++ core/res/res/values-sw600dp/bools.xml | 1 + core/res/res/values/bools.xml | 1 + 4 files changed, 16 insertions(+) diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java index 80f68ac57765c..06f753f3f28ed 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java @@ -48,6 +48,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter { private boolean mMaxItemsSet; private boolean mStrictWidthLimit; private boolean mWidthLimitSet; + private boolean mExpandedActionViewsExclusive; private int mMinCellSize; @@ -124,6 +125,10 @@ public class ActionMenuPresenter extends BaseMenuPresenter { mMaxItemsSet = true; } + public void setExpandedActionViewsExclusive(boolean isExclusive) { + mExpandedActionViewsExclusive = isExclusive; + } + @Override public MenuView getMenuView(ViewGroup root) { MenuView result = super.getMenuView(root); @@ -326,6 +331,11 @@ public class ActionMenuPresenter extends BaseMenuPresenter { } else { hasOverflow = true; } + if (mExpandedActionViewsExclusive && item.isActionViewExpanded()) { + // Overflow everything if we have an expanded action view and we're + // space constrained. + maxActions = 0; + } } // Reserve a spot for the overflow item if needed. diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 678751cda0605..e03858b4af13c 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -345,11 +345,15 @@ public class ActionBarView extends AbsActionBarView { final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); if (!mSplitActionBar) { + mActionMenuPresenter.setExpandedActionViewsExclusive( + getResources().getBoolean( + com.android.internal.R.bool.action_bar_expanded_action_views_exclusive)); builder.addMenuPresenter(mActionMenuPresenter); builder.addMenuPresenter(mExpandedMenuPresenter); menuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); addView(menuView, layoutParams); } else { + mActionMenuPresenter.setExpandedActionViewsExclusive(false); // Allow full screen width in split mode. mActionMenuPresenter.setWidthLimit( getContext().getResources().getDisplayMetrics().widthPixels, true); diff --git a/core/res/res/values-sw600dp/bools.xml b/core/res/res/values-sw600dp/bools.xml index d73ff9977caa9..a453ac13576d4 100644 --- a/core/res/res/values-sw600dp/bools.xml +++ b/core/res/res/values-sw600dp/bools.xml @@ -17,4 +17,5 @@ true false + false diff --git a/core/res/res/values/bools.xml b/core/res/res/values/bools.xml index e51fc66302778..6e4db5e93dfd9 100644 --- a/core/res/res/values/bools.xml +++ b/core/res/res/values/bools.xml @@ -19,4 +19,5 @@ true false true + true