[Android] Remove changes to IVisualElementRenderer so it remains backwards compatible...
authorShane Neuville <shane94@hotmail.com>
Thu, 28 Feb 2019 18:57:20 +0000 (11:57 -0700)
committerSamantha Houts <samhouts@users.noreply.github.com>
Thu, 28 Feb 2019 18:57:20 +0000 (10:57 -0800)
* return IVisualElementRenderer to previous state

* set to internal

Xamarin.Forms.Platform.Android/AppCompat/ImageButtonRenderer.cs
Xamarin.Forms.Platform.Android/FastRenderers/ImageElementManager.cs
Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs
Xamarin.Forms.Platform.Android/ILayoutChanges.cs [new file with mode: 0644]
Xamarin.Forms.Platform.Android/IVisualElementRenderer.cs
Xamarin.Forms.Platform.Android/Renderers/ShellRenderer.cs
Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj

index 75fe751..f8395b1 100644 (file)
@@ -21,7 +21,8 @@ namespace Xamarin.Forms.Platform.Android
                IImageRendererController,
                AView.IOnFocusChangeListener,
                AView.IOnClickListener,
-               AView.IOnTouchListener
+               AView.IOnTouchListener,
+               ILayoutChanges
        {
                bool _inputTransparent;
                bool _disposed;
index 6a4eb64..a2bb807 100644 (file)
@@ -15,7 +15,9 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers
                {
                        renderer.ElementPropertyChanged += OnElementPropertyChanged;
                        renderer.ElementChanged += OnElementChanged;
-                       renderer.LayoutChange += OnLayoutChange;
+
+                       if(renderer is ILayoutChanges layoutChanges)
+                               layoutChanges.LayoutChange += OnLayoutChange;
                }
 
                static void OnLayoutChange(object sender, global::Android.Views.View.LayoutChangeEventArgs e)
@@ -28,7 +30,8 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers
                {
                        renderer.ElementPropertyChanged -= OnElementPropertyChanged;
                        renderer.ElementChanged -= OnElementChanged;
-                       renderer.LayoutChange -= OnLayoutChange;
+                       if (renderer is ILayoutChanges layoutChanges)
+                               layoutChanges.LayoutChange -= OnLayoutChange;
 
                        if (renderer.View is ImageView imageView)
                                imageView.SetImageDrawable(null);
index 6bee123..77003e4 100644 (file)
@@ -11,7 +11,8 @@ using Android.Support.V4.View;
 
 namespace Xamarin.Forms.Platform.Android.FastRenderers
 {
-       internal sealed class ImageRenderer : AImageView, IVisualElementRenderer, IImageRendererController, IViewRenderer, ITabStop
+       internal sealed class ImageRenderer : AImageView, IVisualElementRenderer, IImageRendererController, IViewRenderer, ITabStop,
+               ILayoutChanges
        {
                bool _disposed;
                Image _element;
diff --git a/Xamarin.Forms.Platform.Android/ILayoutChanges.cs b/Xamarin.Forms.Platform.Android/ILayoutChanges.cs
new file mode 100644 (file)
index 0000000..a2455a4
--- /dev/null
@@ -0,0 +1,10 @@
+using System;
+using ALayoutChangeEventArgs = Android.Views.View.LayoutChangeEventArgs;
+
+namespace Xamarin.Forms.Platform.Android
+{
+       internal interface ILayoutChanges
+       {
+               event EventHandler<ALayoutChangeEventArgs> LayoutChange;
+       }
+}
\ No newline at end of file
index c0ff80a..ec03726 100644 (file)
@@ -29,7 +29,5 @@ namespace Xamarin.Forms.Platform.Android
                void SetLabelFor(int? id);
 
                void UpdateLayout();
-
-               event EventHandler<ALayoutChangeEventArgs> LayoutChange;
        }
 }
\ No newline at end of file
index 3ee7617..f6d8263 100644 (file)
@@ -31,12 +31,6 @@ namespace Xamarin.Forms.Platform.Android
                        remove { _elementPropertyChanged -= value; }
                }
 
-               event EventHandler<AView.LayoutChangeEventArgs> IVisualElementRenderer.LayoutChange
-               {
-                       add =>_flyoutRenderer.AndroidView.LayoutChange += value;
-                       remove => _flyoutRenderer.AndroidView.LayoutChange -= value;
-               }
-
                VisualElement IVisualElementRenderer.Element => Element;
 
                VisualElementTracker IVisualElementRenderer.Tracker => null;
index 5ef0415..41320d3 100644 (file)
     <Compile Include="GetDesiredSizeDelegate.cs" />
     <Compile Include="IBorderVisualElementRenderer.cs" />
     <Compile Include="IDeviceInfoProvider.cs" />
+    <Compile Include="ILayoutChanges.cs" />
     <Compile Include="ITabStop.cs" />
     <Compile Include="IPickerRenderer.cs" />
     <Compile Include="PickerManager.cs" />