diff options
| -rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 17 | ||||
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 19 |
2 files changed, 21 insertions, 15 deletions
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index c3c0db2..885ed6d 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -163,7 +163,6 @@ public class ActionBarView extends ViewGroup { LayoutInflater inflater = LayoutInflater.from(context); mCustomNavView = (View) inflater.inflate(customNavId, null); mNavigationMode = ActionBar.NAVIGATION_MODE_CUSTOM; - addView(mCustomNavView); } mContentHeight = a.getLayoutDimension(R.styleable.ActionBar_height, 0); @@ -553,7 +552,7 @@ public class ActionBarView extends ViewGroup { if (mSpinner != null) { mSpinner.measure( MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); + MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); } break; case ActionBar.NAVIGATION_MODE_CUSTOM: @@ -563,8 +562,16 @@ public class ActionBarView extends ViewGroup { MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; final int customNavWidth = lp.width >= 0 ? Math.min(lp.width, availableWidth) : availableWidth; - final int customNavHeightMode = lp.height != LayoutParams.WRAP_CONTENT ? - MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; + + // If the action bar is wrapping to its content height, don't allow a custom + // view to MATCH_PARENT. + int customNavHeightMode; + if (mContentHeight <= 0) { + customNavHeightMode = MeasureSpec.AT_MOST; + } else { + customNavHeightMode = lp.height != LayoutParams.WRAP_CONTENT ? + MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; + } final int customNavHeight = lp.height >= 0 ? Math.min(lp.height, height) : height; mCustomNavView.measure( @@ -576,7 +583,7 @@ public class ActionBarView extends ViewGroup { if (mTabLayout != null) { mTabLayout.measure( MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); + MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); } break; } diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index a410fa4..6be5546 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -643,17 +643,16 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { boolean playSoundEffect = false; final PanelFeatureState st = getPanelState(featureId, true); - if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null) { - if (mActionBar.isOverflowReserved()) { - if (!mActionBar.isOverflowMenuShowing()) { - final Callback cb = getCallback(); - if (cb != null && - cb.onPreparePanel(featureId, st.createdPanelView, st.menu)) { - playSoundEffect = mActionBar.showOverflowMenu(); - } - } else { - playSoundEffect = mActionBar.hideOverflowMenu(); + if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && + mActionBar.isOverflowReserved()) { + if (!mActionBar.isOverflowMenuShowing()) { + final Callback cb = getCallback(); + if (cb != null && + cb.onPreparePanel(featureId, st.createdPanelView, st.menu)) { + playSoundEffect = mActionBar.showOverflowMenu(); } + } else { + playSoundEffect = mActionBar.hideOverflowMenu(); } } else { if (st.isOpen || st.isHandled) { |
