void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { var reference = Guid.NewGuid().ToString(); Performance.Start(reference); if (CompressedLayout.GetIsHeadless(view)) { var packager = new VisualElementPackager(_renderer, view); if (_childPackagers == null) { _childPackagers = new Dictionary <BindableObject, VisualElementPackager>(); } view.IsPlatformEnabled = true; packager.Load(); _childPackagers[view] = packager; } else { if (_childViews == null) { _childViews = new List <IVisualElementRenderer>(); } IVisualElementRenderer renderer = oldRenderer; if (pool != null) { renderer = pool.GetFreeRenderer(view); } if (renderer == null) { Performance.Start(reference, "New renderer"); renderer = Platform.CreateRenderer(view, _renderer.View.Context); Performance.Stop(reference, "New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start(reference, "Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop(reference, "Set renderer"); Performance.Start(reference, "Add view"); if (!sameChildren) { (_renderer.View as ViewGroup)?.AddView(renderer.View); _childViews.Add(renderer); } Performance.Stop(reference, "Add view"); Performance.Stop(reference); } }
void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { Performance.Start(); if (CompressedLayout.GetIsHeadless(view)) { var packager = new VisualElementPackager(_renderer, view); view.IsPlatformEnabled = true; packager.Load(); } else { if (_childViews == null) { _childViews = new List <IVisualElementRenderer>(); } IVisualElementRenderer renderer = oldRenderer; if (pool != null) { renderer = pool.GetFreeRenderer(view); } if (renderer == null) { Performance.Start("New renderer"); renderer = Platform.CreateRenderer(view); Performance.Stop("New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start("Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop("Set renderer"); Performance.Start("Add view"); if (!sameChildren) { (_renderer.View as ViewGroup)?.AddView(renderer.View); _childViews.Add(renderer); } Performance.Stop("Add view"); } Performance.Stop(); }
public void SetElement (VisualElement element) { var oldElement = this.Element; if (oldElement != null) oldElement.PropertyChanged -= HandlePropertyChanged; this.Element = element; if (this.Element != null) { //UpdateContent (); this.Element.PropertyChanged += HandlePropertyChanged; } ViewGroup.RemoveAllViews (); //sizes to match the forms view //updates properties, handles visual element properties Tracker = new VisualElementTracker (this); Packager = new VisualElementPackager (this); Packager.Load (); UseCompatPadding = true; SetContentPadding ((int)TheView.Padding.Left, (int)TheView.Padding.Top, (int)TheView.Padding.Right, (int)TheView.Padding.Bottom); Radius = TheView.CornderRadius; this.SetCardBackgroundColor(TheView.BackgroundColor.ToAndroid ()); if (ElementChanged != null) ElementChanged (this, new VisualElementChangedEventArgs (oldElement, this.Element)); }
protected void SetPackager(VisualElementPackager packager) { _packager = packager; packager.Load(); }