summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Android')
-rw-r--r--Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/ViewRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/VisualElementRenderer.cs17
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();