diff options
| author | 2011-09-08 18:09:33 -0700 | |
|---|---|---|
| committer | 2011-09-08 18:10:24 -0700 | |
| commit | 425689eea2f4f208f29b944b4973981bdbeda9f5 (patch) | |
| tree | 518b80e7991b949762a759b9c6174998228244de | |
| parent | dceee86438a7e950a63e80bf8f9347aeaa022a71 (diff) | |
Fix bug 5279075 - Handle action bar config changes when action mode is active
Change-Id: I83d40d2d555b01a9e678231c4f3c5278fab959d7
3 files changed, 37 insertions, 33 deletions
diff --git a/core/java/com/android/internal/widget/AbsActionBarView.java b/core/java/com/android/internal/widget/AbsActionBarView.java index df2f717e926a..6c11288deb61 100644 --- a/core/java/com/android/internal/widget/AbsActionBarView.java +++ b/core/java/com/android/internal/widget/AbsActionBarView.java @@ -15,6 +15,7 @@ */ package com.android.internal.widget; +import com.android.internal.R; import com.android.internal.view.menu.ActionMenuPresenter; import com.android.internal.view.menu.ActionMenuView; @@ -23,6 +24,8 @@ import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.TimeInterpolator; import android.content.Context; +import android.content.res.Configuration; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -32,6 +35,7 @@ public abstract class AbsActionBarView extends ViewGroup { protected ActionMenuView mMenuView; protected ActionMenuPresenter mActionMenuPresenter; protected ActionBarContainer mSplitView; + protected int mContentHeight; protected Animator mVisibilityAnim; protected final VisibilityAnimListener mVisAnimListener = new VisibilityAnimListener(); @@ -52,6 +56,30 @@ public abstract class AbsActionBarView extends ViewGroup { super(context, attrs, defStyle); } + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + // Action bar can change size on configuration changes. + // Reread the desired height from the theme-specified style. + TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.ActionBar, + com.android.internal.R.attr.actionBarStyle, 0); + setContentHeight(a.getLayoutDimension(R.styleable.ActionBar_height, 0)); + a.recycle(); + if (mActionMenuPresenter != null) { + mActionMenuPresenter.onConfigurationChanged(newConfig); + } + } + + public void setContentHeight(int height) { + mContentHeight = height; + requestLayout(); + } + + public int getContentHeight() { + return mContentHeight; + } + public void setSplitView(ActionBarContainer splitView) { mSplitView = splitView; } diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index 4fccc32d1979..a6313805f08a 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -44,8 +44,6 @@ import android.widget.TextView; public class ActionBarContextView extends AbsActionBarView implements AnimatorListener { private static final String TAG = "ActionBarContextView"; - private int mContentHeight; - private CharSequence mTitle; private CharSequence mSubtitle; @@ -94,15 +92,7 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi a.recycle(); } - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - if (mActionMenuPresenter != null) { - mActionMenuPresenter.onConfigurationChanged(newConfig); - } - } - - public void setHeight(int height) { + public void setContentHeight(int height) { mContentHeight = height; } diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 63b027411f16..7434df3a9bd0 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -84,8 +84,6 @@ public class ActionBarView extends AbsActionBarView { private static final int DEFAULT_CUSTOM_GRAVITY = Gravity.LEFT | Gravity.CENTER_VERTICAL; - private int mContentHeight; - private int mNavigationMode; private int mDisplayOptions = -1; private CharSequence mTitle; @@ -257,16 +255,6 @@ public class ActionBarView extends AbsActionBarView { protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - // Action bar can change size on configuration changes. - // Reread the desired height from the theme-specified style. - TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.ActionBar, - com.android.internal.R.attr.actionBarStyle, 0); - setContentHeight(a.getLayoutDimension(R.styleable.ActionBar_height, 0)); - a.recycle(); - if (mActionMenuPresenter != null) { - mActionMenuPresenter.onConfigurationChanged(newConfig); - } - mTitleView = null; mSubtitleView = null; mTitleUpView = null; @@ -277,6 +265,13 @@ public class ActionBarView extends AbsActionBarView { if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0) { initTitle(); } + + if (mTabScrollView != null && mIncludeTabs) { + ViewGroup.LayoutParams lp = mTabScrollView.getLayoutParams(); + lp.width = LayoutParams.WRAP_CONTENT; + lp.height = LayoutParams.MATCH_PARENT; + mTabScrollView.setAllowCollapse(true); + } } @Override @@ -304,15 +299,6 @@ public class ActionBarView extends AbsActionBarView { addView(mIndeterminateProgressView); } - public void setContentHeight(int height) { - mContentHeight = height; - requestLayout(); - } - - public int getContentHeight() { - return mContentHeight; - } - public void setSplitActionBar(boolean splitActionBar) { if (mSplitActionBar != splitActionBar) { if (mMenuView != null) { @@ -957,7 +943,7 @@ public class ActionBarView extends AbsActionBarView { } if (mContextView != null) { - mContextView.setHeight(getMeasuredHeight()); + mContextView.setContentHeight(getMeasuredHeight()); } if (mProgressView != null && mProgressView.getVisibility() != GONE) { |