Пример #1
0
        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);
        }
Пример #2
0
        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;
 }