diff options
author | Adam Powell <adamp@google.com> | 2011-08-29 10:42:43 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-29 10:42:43 -0700 |
commit | b5d80fca2eb7f6053e6d404a0d4a7c213dad1317 (patch) | |
tree | ae64bf23269f07aacebd8294f9fc57b59691135d /core | |
parent | 2db44c5838fb0bb35092a19f31ee887892a451a1 (diff) | |
parent | 9a5cc2810bbbcb0eab4579aa4131039820d92101 (diff) | |
download | frameworks_base-b5d80fca2eb7f6053e6d404a0d4a7c213dad1317.zip frameworks_base-b5d80fca2eb7f6053e6d404a0d4a7c213dad1317.tar.gz frameworks_base-b5d80fca2eb7f6053e6d404a0d4a7c213dad1317.tar.bz2 |
Merge "Fix bug 5124021 - Menu visibility incorrect when restoring ListView selection mode"
Diffstat (limited to 'core')
4 files changed, 36 insertions, 12 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 86f061a..80cbbfb 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -1574,8 +1574,17 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te ss.inActionMode = mChoiceMode == CHOICE_MODE_MULTIPLE_MODAL && mChoiceActionMode != null; - ss.checkState = mCheckStates; - ss.checkIdState = mCheckedIdStates; + if (mCheckStates != null) { + ss.checkState = mCheckStates.clone(); + } + if (mCheckedIdStates != null) { + final LongSparseArray<Boolean> idState = new LongSparseArray<Boolean>(); + final int count = mCheckedIdStates.size(); + for (int i = 0; i < count; i++) { + idState.put(mCheckedIdStates.keyAt(i), mCheckedIdStates.valueAt(i)); + } + ss.checkIdState = idState; + } ss.checkedItemCount = mCheckedItemCount; return ss; diff --git a/core/java/com/android/internal/widget/AbsActionBarView.java b/core/java/com/android/internal/widget/AbsActionBarView.java index ccbce3e..df2f717 100644 --- a/core/java/com/android/internal/widget/AbsActionBarView.java +++ b/core/java/com/android/internal/widget/AbsActionBarView.java @@ -56,6 +56,16 @@ public abstract class AbsActionBarView extends ViewGroup { mSplitView = splitView; } + /** + * @return Current visibility or if animating, the visibility being animated to. + */ + public int getAnimatedVisibility() { + if (mVisibilityAnim != null) { + return mVisAnimListener.mFinalVisibility; + } + return getVisibility(); + } + public void animateToVisibility(int visibility) { if (mVisibilityAnim != null) { mVisibilityAnim.cancel(); @@ -179,7 +189,7 @@ public abstract class AbsActionBarView extends ViewGroup { protected class VisibilityAnimListener implements Animator.AnimatorListener { private boolean mCanceled = false; - private int mFinalVisibility; + int mFinalVisibility; public VisibilityAnimListener withFinalVisibility(int visibility) { mFinalVisibility = visibility; @@ -199,6 +209,9 @@ public abstract class AbsActionBarView extends ViewGroup { mVisibilityAnim = null; setVisibility(mFinalVisibility); + if (mSplitView != null && mMenuView != null) { + mMenuView.setVisibility(mFinalVisibility); + } } @Override diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index 45d38ae..4fccc32 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -33,6 +33,7 @@ import android.util.AttributeSet; import android.view.ActionMode; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.view.animation.DecelerateInterpolator; import android.widget.LinearLayout; import android.widget.TextView; @@ -270,14 +271,14 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi } @Override - protected LayoutParams generateDefaultLayoutParams() { + protected ViewGroup.LayoutParams generateDefaultLayoutParams() { // Used by custom views if they don't supply layout params. Everything else // added to an ActionBarContextView should have them already. return new MarginLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); } @Override - public LayoutParams generateLayoutParams(AttributeSet attrs) { + public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { return new MarginLayoutParams(getContext(), attrs); } @@ -321,7 +322,7 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi } if (mCustomView != null) { - LayoutParams lp = mCustomView.getLayoutParams(); + ViewGroup.LayoutParams lp = mCustomView.getLayoutParams(); final int customWidthMode = lp.width != LayoutParams.WRAP_CONTENT ? MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; final int customWidth = lp.width >= 0 ? diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index a0f6259..ff26d50 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -401,6 +401,7 @@ public class ActionBarView extends AbsActionBarView { if (oldParent != null && oldParent != mSplitView) { oldParent.removeView(menuView); } + menuView.setVisibility(getAnimatedVisibility()); mSplitView.addView(menuView, layoutParams); } else { // We'll add this later if we missed it this time. @@ -683,7 +684,7 @@ public class ActionBarView extends AbsActionBarView { } @Override - protected LayoutParams generateDefaultLayoutParams() { + protected ViewGroup.LayoutParams generateDefaultLayoutParams() { // Used by custom nav views if they don't supply layout params. Everything else // added to an ActionBarView should have them already. return new ActionBar.LayoutParams(DEFAULT_CUSTOM_GRAVITY); @@ -810,7 +811,7 @@ public class ActionBarView extends AbsActionBarView { HomeView homeLayout = mExpandedActionView != null ? mExpandedHomeLayout : mHomeLayout; if (homeLayout.getVisibility() != GONE) { - final LayoutParams lp = homeLayout.getLayoutParams(); + final ViewGroup.LayoutParams lp = homeLayout.getLayoutParams(); int homeWidthSpec; if (lp.width < 0) { homeWidthSpec = MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST); @@ -881,7 +882,7 @@ public class ActionBarView extends AbsActionBarView { } if (customView != null) { - final LayoutParams lp = generateLayoutParams(customView.getLayoutParams()); + final ViewGroup.LayoutParams lp = generateLayoutParams(customView.getLayoutParams()); final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ? (ActionBar.LayoutParams) lp : null; @@ -1017,7 +1018,7 @@ public class ActionBarView extends AbsActionBarView { customView = mCustomNavView; } if (customView != null) { - LayoutParams lp = customView.getLayoutParams(); + ViewGroup.LayoutParams lp = customView.getLayoutParams(); final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ? (ActionBar.LayoutParams) lp : null; @@ -1095,12 +1096,12 @@ public class ActionBarView extends AbsActionBarView { } @Override - public LayoutParams generateLayoutParams(AttributeSet attrs) { + public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { return new ActionBar.LayoutParams(getContext(), attrs); } @Override - public LayoutParams generateLayoutParams(LayoutParams lp) { + public ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) { if (lp == null) { lp = generateDefaultLayoutParams(); } |