public LayoutParams(PlatformView view, Action <IViewLayoutBox> layoutAction) { Assert.Argument(view, nameof(view)).NotNull(); Assert.Argument(layoutAction, nameof(layoutAction)).NotNull(); _view = view; _layout = layoutAction ?? DefaultLayout; }
public void RemoveSubview(PlatformView view) { if (view != null) { view.AsView().RemoveFromSuperview(); Views.Remove(view); } }
public PlatformView AddSubview(PlatformView view) { Views.Add(view); #if __ANDROID__ view.Id = Views.Count; #endif Parent.AsView().AddSubview(view); return(view); }
public static SizeF PreferredSize(this PlatformView v, SizeF size) { #if __IOS__ return((SizeF)v.SizeThatFits((CGSize)size)); #elif __ANDROID__ var ws = MeasureSpec.MakeMeasureSpec((int)Math.Round(size.Width), MeasureSpecMode.AtMost); var hs = MeasureSpec.MakeMeasureSpec((int)Math.Round(size.Height), MeasureSpecMode.Unspecified); v.Measure(ws, hs); return(new SizeF(v.MeasuredWidth, v.MeasuredHeight)); #else return(v.Frame.Size); #endif }
/// <summary> /// Build <see cref="IViewLayoutBox"/>. /// </summary> /// <param name="v">View geometry (usually cross platform View wrapper)</param> /// <param name="outerBounds">Optional outer bounds to override this builder <see cref="OuterBounds"/>.</param> /// <param name="units">Optional units to override this builder <see cref="Units"/>.</param> public IViewLayoutBox View(PlatformView v, RectangleF?outerBounds = null, IUnit units = null) { var layoutBounds = outerBounds ?? PaddedOuterBounds; ViewLayoutBox box; if (_boxes.TryGetValue(v, out box)) { if (box.OuterBounds != layoutBounds) { _boxes.Remove(v); box = null; } } if (box == null) { box = new ViewLayoutBox(v, layoutBounds); } _boxes[v] = box; return(box); }
public EventHandlerSource <T> ClickTarget() { return(PlatformView.ClickTarget()); }
public ViewLayoutBox(PlatformView v, RectangleF r) : base(r) { View = v; }
/// <summary> /// Build <see cref="IViewLayoutBox"/>. /// </summary> /// <param name="v">View geometry (usually cross platform View wrapper)</param> /// <param name="outerBounds">Optional outer bounds to override this builder <see cref="OuterBounds"/>.</param> public IViewLayoutBox View(PlatformView v, ILayoutBox outerBounds) { return(View(v, outerBounds.Frame())); }
public IViewLayoutBox Add(PlatformView v) { return(Add(new LayoutParams(v))); }
public IViewLayoutBox Add(PlatformView v, Action <IViewLayoutBox> layout) { return(Add(new LayoutParams(v, layout))); }
public LayoutParams(PlatformView view) : this(view, DefaultLayout) { }