private Size GetApplicableSize(BasePageableItem item, PagerStyle style) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var size = item.CustomSize ?? this.CustomSize; if (size.HasValue) { return(size.Value); } else { switch (style) { case PagerStyle.Rectangle: case PagerStyle.Oval: return(new Size(8, 4)); case PagerStyle.Diamond: return(new Size(6, 8)); case PagerStyle.Square: case PagerStyle.Circle: case PagerStyle.Star: case PagerStyle.Triangle: case PagerStyle.Heart: default: return(new Size(8, 8)); } } }
private void UpdateView(BasePageableItem item, bool selected, ShapeView view) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var style = item.CustomPagerStyle ?? this.PagerStyle; var color = selected ? item.CustomSelectedColor ?? this.CustomSelectedColor ?? Color.White : item.CustomUnselectedColor ?? this.CustomUnselectedColor ?? Color.FromRgba(1, 1, 1, 0.5); var size = this.GetApplicableSize(item, style); view.Color = color; view.HeightRequest = size.Height; view.WidthRequest = size.Width; view.ClassId = selected.ToString(); switch (style) { case PagerStyle.Rectangle: case PagerStyle.Square: view.ShapeType = ShapeType.Box; break; case PagerStyle.RoundedRectangle: case PagerStyle.RoundedSquare: view.CornerRadius = (float)(size.Height + size.Width) / 10f; break; case PagerStyle.Star: view.ShapeType = ShapeType.Star; break; case PagerStyle.Triangle: view.ShapeType = ShapeType.Triangle; break; case PagerStyle.Oval: view.ShapeType = ShapeType.Oval; break; case PagerStyle.Diamond: view.ShapeType = ShapeType.Diamond; break; case PagerStyle.Heart: view.ShapeType = ShapeType.Heart; break; case PagerStyle.Circle: default: view.ShapeType = ShapeType.Circle; break; } }
private ShapeView GetApplicableView(BasePageableItem item, bool selected) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var result = new ShapeView { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center }; this.UpdateView(item, selected, result); return(result); }