Merge "Fix bug 5124021 - Menu visibility incorrect when restoring ListView selection mode"
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ?
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user