Example #1
0
        public sealed override void OnAttachedToRecyclerView(RecyclerView recyclerView)
        {
            base.OnAttachedToRecyclerView(recyclerView);

            switch (CardType)
            {
            case RecyclerCardType.FlatHorizontal:
                _decoration = new DefaultItemDecoration(Context);
                recyclerView.AddItemDecoration(_decoration);
                recyclerView.SetLayoutManager(new LinearLayoutManager(Context, _orientation, false));
                break;

            case RecyclerCardType.Horizontal:
                recyclerView.SetLayoutManager(new LinearLayoutManager(Context, _orientation, false));
                break;

            case RecyclerCardType.Vertical:
                recyclerView.SetLayoutManager(new GridLayoutManager(Context, CalculateCardColumns(Context), _orientation, false));
                break;

            case RecyclerCardType.Custom:
                if (CustomCardUseItemDecoration)
                {
                    _decoration = new DefaultItemDecoration(Context);
                    recyclerView.AddItemDecoration(_decoration);
                }
                recyclerView.SetLayoutManager(new LinearLayoutManager(Context));
                break;
            }
        }
        protected override void UpdateItemSpacing()
        {
            if (ItemsLayout == null)
            {
                return;
            }

            if (_itemDecoration != null)
            {
                RemoveItemDecoration(_itemDecoration);
            }

            _itemDecoration = CreateSpacingDecoration(ItemsLayout);
            AddItemDecoration(_itemDecoration);

            var adapter = GetAdapter();

            if (adapter != null)
            {
                adapter.NotifyItemChanged(_oldPosition);
                Carousel.ScrollTo(_oldPosition, position: Xamarin.Forms.ScrollToPosition.Center);
            }

            base.UpdateItemSpacing();
        }
Example #3
0
        void UpdatePadding()
        {
            _recyclerView.SetPadding((int)(Element.ContentPaddingLeft * _density),
                                     (int)(Element.ContentPaddingTop * _density),
                                     (int)(Element.ContentPaddingRight * _density),
                                     (int)(Element.ContentPaddingBottom * _density));
            if (Element.IsHorizontal)
            {
                if (_paddingDecoration != null)
                {
                    _recyclerView.RemoveItemDecoration(_paddingDecoration);
                }

                var cs = Element.ColumnSpacing;
                var rs = Element.RowSpacing;
                if (cs > 0 || rs > 0)
                {
                    _paddingDecoration =
                        new HorizontalSpacesItemDecoration(ConvertDpToPixels((float)cs), ConvertDpToPixels((int)rs));
                    _recyclerView.AddItemDecoration(_paddingDecoration);
                }
            }
            else
            {
                UpdateGridLayout();
            }
        }
Example #4
0
 void UpdateItemDecoration()
 {
     if (_itemDecoration != null)
     {
         RemoveItemDecoration(_itemDecoration);
     }
     _itemDecoration = CreateSpacingDecoration(ItemsLayout);
     AddItemDecoration(_itemDecoration);
 }
Example #5
0
        void UpdateGridLayout()
        {
            var source        = Element.ItemsSource as ICollection;
            var numberOfItems = source == null ? 0 : source.Count;

            var horizontalPadding  = 0;
            int numberOfItemsToUse = 1;

            if (_layoutManager != null)
            {
                if (Element.Width > 0)
                {
                    //					float width = (float)_recyclerView.Width - 2;
                    if (Element.IsContentCentered)
                    {
                        float width = (float)Element.Width;
                        int   numberOfItemsThatFit = (int)Math.Floor((width) / (Element.ItemWidth + Element.ColumnSpacing));
                        numberOfItemsToUse = Element.CenterAsFilledRow ? numberOfItemsThatFit : (int)Math.Min(numberOfItemsThatFit, numberOfItems);
                        if (Element.MaxItemsPerRow != -1)
                        {
                            numberOfItemsToUse = Element.MaxItemsPerRow;
                        }
                        var remainingWidth = (width - (Element.ContentPaddingLeft + Element.ContentPaddingRight)) - ((numberOfItemsToUse * Element.ItemWidth) + ((numberOfItemsToUse) * (Element.ColumnSpacing)));
                        horizontalPadding = (int)(remainingWidth / (numberOfItemsToUse + 1));
                    }
                    else
                    {
                        horizontalPadding = (int)Element.ColumnSpacing;
                    }

                    Console.WriteLine(" width {0} items using {1} padding {2} iwdith {3} ", _recyclerView.Width, numberOfItemsToUse, horizontalPadding, Element.ItemWidth);
                }
            }


            var gridLayoutManager = _layoutManager as GridLayoutManager;

            if (gridLayoutManager != null)
            {
                //TODO calculate
                gridLayoutManager.SpanCount = Math.Max(1, numberOfItemsToUse);
            }
            //TODO
            if (_paddingDecoration != null)
            {
                _recyclerView.RemoveItemDecoration(_paddingDecoration);
            }
            _paddingDecoration = new SpacesItemDecoration(ConvertDpToPixels(horizontalPadding), ConvertDpToPixels((int)Element.RowSpacing),
                                                          numberOfItems, numberOfItemsToUse,
                                                          ConvertDpToPixels((int)Element.ContentPaddingTop), ConvertDpToPixels((int)Element.ContentPaddingBottom));

            //			_paddingDecoration = new SpacesItemDecoration (horizontalPadding, (int)Element.RowSpacing,
            //				numberOfItems, numberOfItemsToUse,
            //				(int)Element.ContentPaddingTop, (int)Element.ContentPaddingBottom);
            _recyclerView.AddItemDecoration(_paddingDecoration);
        }
 private void SetItemDecoration()
 {
     if (_isGrid)
     {
         var space = Activity.Resources.GetDimensionPixelSize(Resource.Dimension.spacing_card_album_grid);
         _decoration = new SpacesItemDecoration(space);
     }
     else
     {
         _decoration = new DividerItemDecoration(Activity, DividerItemDecoration.Vertical);
     }
     _recyclerView.AddItemDecoration(_decoration);
 }
Example #7
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_itemDecoration != null)
                {
                    _itemDecoration.Dispose();
                    _itemDecoration = null;
                }
            }

            base.Dispose(disposing);
        }
Example #8
0
        protected virtual void UpdateItemSpacing()
        {
            if (ItemsLayout == null)
            {
                return;
            }

            if (_itemDecoration != null)
            {
                RemoveItemDecoration(_itemDecoration);
            }

            _itemDecoration = CreateSpacingDecoration(ItemsLayout);
            AddItemDecoration(_itemDecoration);
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_itemDecoration != null)
                {
                    _itemDecoration.Dispose();
                    _itemDecoration = null;
                }

                ClearLayoutListener();
            }

            base.Dispose(disposing);
        }
Example #10
0
        protected virtual void UpdateItemSpacing()
        {
            if (_layout == null)
            {
                return;
            }

            if (_itemDecoration != null)
            {
                RemoveItemDecoration(_itemDecoration);
            }

            _itemDecoration = new SpacingItemDecoration(_layout);
            AddItemDecoration(_itemDecoration);
        }
Example #11
0
        void UpdateGridLayout()
        {
            if (_paddingDecoration != null)
            {
                _recyclerView.RemoveItemDecoration(_paddingDecoration);
            }

            _recyclerView.InvalidateItemDecorations();
            var cs = Element.ColumnSpacing;
            var rs = Element.RowSpacing;

            if (cs > 0 || rs > 0)
            {
                _paddingDecoration = new HorizontalSpacesItemDecoration(ConvertDpToPixels((int)Element.ColumnSpacing),
                                                                        ConvertDpToPixels((int)Element.RowSpacing));
                _recyclerView.AddItemDecoration(_paddingDecoration);
            }
        }
Example #12
0
 void UpdatePadding()
 {
     _recyclerView.SetPadding((int)Element.ContentPaddingLeft,
                              (int)Element.ContentPaddingTop,
                              (int)Element.ContentPaddingRight,
                              (int)Element.ContentPaddingBottom);
     if (Element.IsHorizontal)
     {
         if (_paddingDecoration != null)
         {
             _recyclerView.RemoveItemDecoration(_paddingDecoration);
         }
         _paddingDecoration = new HorizontalSpacesItemDecoration(ConvertDpToPixels((float)Element.ColumnSpacing / 2), ConvertDpToPixels((int)Element.RowSpacing));
         _recyclerView.AddItemDecoration(_paddingDecoration);
     }
     else
     {
         UpdateGridLayout();
     }
 }
Example #13
0
 void UpdatePadding()
 {
     _recyclerView.SetPadding((int)Element.ContentPaddingLeft,
                              (int)Element.ContentPaddingTop,
                              (int)Element.ContentPaddingRight,
                              (int)Element.ContentPaddingBottom);
     if (Element.IsHorizontal)
     {
         if (_paddingDecoration != null)
         {
             _recyclerView.RemoveItemDecoration(_paddingDecoration);
         }
         var source        = Element.ItemsSource as ICollection;
         var numberOfItems = source == null ? 0 : source.Count;
         _paddingDecoration = new HorizontalSpacesItemDecoration(ConvertDpToPixels((float)Element.ColumnSpacing / 2), ConvertDpToPixels((int)Element.RowSpacing));
         _recyclerView.AddItemDecoration(_paddingDecoration);
     }
     else
     {
         UpdateGridLayout();
     }
 }