Пример #1
0
 public LayoutParams(PlatformView view, Action <IViewLayoutBox> layoutAction)
 {
     Assert.Argument(view, nameof(view)).NotNull();
     Assert.Argument(layoutAction, nameof(layoutAction)).NotNull();
     _view   = view;
     _layout = layoutAction ?? DefaultLayout;
 }
Пример #2
0
 public void RemoveSubview(PlatformView view)
 {
     if (view != null)
     {
         view.AsView().RemoveFromSuperview();
         Views.Remove(view);
     }
 }
Пример #3
0
        public PlatformView AddSubview(PlatformView view)
        {
            Views.Add(view);
#if __ANDROID__
            view.Id = Views.Count;
#endif
            Parent.AsView().AddSubview(view);
            return(view);
        }
Пример #4
0
        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
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
 public EventHandlerSource <T> ClickTarget()
 {
     return(PlatformView.ClickTarget());
 }
Пример #7
0
 public ViewLayoutBox(PlatformView v, RectangleF r) : base(r)
 {
     View = v;
 }
Пример #8
0
 /// <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()));
 }
Пример #9
0
 public IViewLayoutBox Add(PlatformView v)
 {
     return(Add(new LayoutParams(v)));
 }
Пример #10
0
 public IViewLayoutBox Add(PlatformView v, Action <IViewLayoutBox> layout)
 {
     return(Add(new LayoutParams(v, layout)));
 }
Пример #11
0
 public LayoutParams(PlatformView view) : this(view, DefaultLayout)
 {
 }