diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Android')
-rw-r--r-- | Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Android/ViewRenderer.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Android/VisualElementRenderer.cs | 17 |
3 files changed, 16 insertions, 5 deletions
diff --git a/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs b/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs index 933f436f..49abc02a 100644 --- a/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs +++ b/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs @@ -57,5 +57,7 @@ namespace Xamarin.Forms.Platform.Android if (!handled) base.OnMeasure(widthMeasureSpec, heightMeasureSpec); } + + protected override bool ManageNativeControlLifetime => false; } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.Android/ViewRenderer.cs b/Xamarin.Forms.Platform.Android/ViewRenderer.cs index 0415ce93..143e6a7f 100644 --- a/Xamarin.Forms.Platform.Android/ViewRenderer.cs +++ b/Xamarin.Forms.Platform.Android/ViewRenderer.cs @@ -69,7 +69,7 @@ namespace Xamarin.Forms.Platform.Android { if (disposing && !_disposed) { - if (Control != null) + if (Control != null && ManageNativeControlLifetime) { Control.RemoveFromParent(); Control.Dispose(); diff --git a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs index 5abb809f..d44714be 100644 --- a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs @@ -212,6 +212,12 @@ namespace Xamarin.Forms.Platform.Android Performance.Stop(); } + /// <summary> + /// Determines whether the native control is disposed of when this renderer is disposed + /// Can be overridden in deriving classes + /// </summary> + protected virtual bool ManageNativeControlLifetime => true; + protected override void Dispose(bool disposing) { if ((_flags & VisualElementRendererFlags.Disposed) != 0) @@ -244,11 +250,14 @@ namespace Xamarin.Forms.Platform.Android _gestureListener = null; } - int count = ChildCount; - for (var i = 0; i < count; i++) + if (ManageNativeControlLifetime) { - AView child = GetChildAt(i); - child.Dispose(); + int count = ChildCount; + for (var i = 0; i < count; i++) + { + AView child = GetChildAt(i); + child.Dispose(); + } } RemoveAllViews(); |