public override IParcelable OnSaveInstanceState() { var superState = base.OnSaveInstanceState() ?? new Bundle(); if (pendingAnchorSavedState != null) { return(new AnchorSavedState(pendingAnchorSavedState, superState)); } var saveState = new AnchorSavedState(superState); if (ChildCount > 0) { var refAnchor = getChildClosestToStart(); saveState.AnchorShouldLayoutFromEnd = false; saveState.TopAnchorPosition = GetPosition(refAnchor); saveState.AnchorOffset = orientationHelper.GetDecoratedStart(refAnchor) - orientationHelper.StartAfterPadding; } else { saveState.InvalidateAnchor(); } return(saveState); }
public override void OnRestoreInstanceState(IParcelable state) { base.OnRestoreInstanceState(state); if (!(state is AnchorSavedState savedState)) { base.OnRestoreInstanceState(state); return; } base.OnRestoreInstanceState(savedState.SuperState); pendingAnchorSavedState = savedState; RequestLayout(); }
public AnchorSavedState(AnchorSavedState other, IParcelable supersTate) : base(supersTate) { TopAnchorPosition = other.TopAnchorPosition; AnchorOffset = other.AnchorOffset; AnchorShouldLayoutFromEnd = other.AnchorShouldLayoutFromEnd; }