summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android
diff options
context:
space:
mode:
authorMarcus Lum <marcusl@gmail.com>2016-08-30 17:37:07 (GMT)
committerJason Smith <jason.smith@xamarin.com>2016-08-30 17:37:07 (GMT)
commit61f34d113c9f6941194a6ed3101f54158de722a3 (patch)
treeb6211a4e1a4dba6ec40aad3823a795387e851815 /Xamarin.Forms.Platform.Android
parent5b85aafcd671f5e8745cf52339c20378f91cb748 (diff)
downloadxamarin-forms-61f34d113c9f6941194a6ed3101f54158de722a3.zip
xamarin-forms-61f34d113c9f6941194a6ed3101f54158de722a3.tar.gz
xamarin-forms-61f34d113c9f6941194a6ed3101f54158de722a3.tar.bz2
Allow Custom Android MapRenderers to override the default MapView options (#285)
* Allow Custom Android MapRenderers to override the default MapView options * Larger effort to use CreateNativeControl () everywhere instead of just in the Android AppCompat renderers.
Diffstat (limited to 'Xamarin.Forms.Platform.Android')
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/ViewRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs6
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ActivityIndicatorRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/DatePickerRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/EditorRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/EntryRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/NavigationMenuRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/OpenGLViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/PickerRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/SearchBarRenderer.cs8
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/SliderRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/StepperRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/SwitchRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/TableViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/TimePickerRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.Android/ViewRenderer.cs2
22 files changed, 123 insertions, 20 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/ViewRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/ViewRenderer.cs
index 3c86921..85ff398 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/ViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/ViewRenderer.cs
@@ -2,6 +2,5 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
{
public abstract class ViewRenderer<TView, TControl> : Android.ViewRenderer<TView, TControl> where TView : View where TControl : global::Android.Views.View
{
- protected abstract TControl CreateNativeControl();
}
} \ No newline at end of file
diff --git a/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs b/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs
index 2036e4b..d2f2397 100644
--- a/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/NativeViewWrapperRenderer.cs
@@ -17,6 +17,12 @@ namespace Xamarin.Forms.Platform.Android
return result ?? base.GetDesiredSize(widthConstraint, heightConstraint);
}
+ // not called by the view wrapper renderer
+ protected override global::Android.Views.View CreateNativeControl()
+ {
+ return new global::Android.Views.View(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<NativeViewWrapper> e)
{
base.OnElementChanged(e);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ActivityIndicatorRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ActivityIndicatorRenderer.cs
index 696e6f6..f536b47 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ActivityIndicatorRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ActivityIndicatorRenderer.cs
@@ -13,6 +13,11 @@ namespace Xamarin.Forms.Platform.Android
AutoPackage = false;
}
+ protected override AProgressBar CreateNativeControl()
+ {
+ return new AProgressBar(Context) { Indeterminate = true };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<ActivityIndicator> e)
{
base.OnElementChanged(e);
@@ -20,7 +25,7 @@ namespace Xamarin.Forms.Platform.Android
AProgressBar progressBar = Control;
if (progressBar == null)
{
- progressBar = new AProgressBar(Context) { Indeterminate = true };
+ progressBar = CreateNativeControl();
SetNativeControl(progressBar);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
index 5de429a..4f384b3 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
@@ -80,6 +80,11 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override AButton CreateNativeControl()
+ {
+ return new AButton(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
@@ -89,7 +94,7 @@ namespace Xamarin.Forms.Platform.Android
AButton button = Control;
if (button == null)
{
- button = new AButton(Context);
+ button = CreateNativeControl();
button.SetOnClickListener(ButtonClickListener.Instance.Value);
button.Tag = this;
SetNativeControl(button);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/DatePickerRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/DatePickerRenderer.cs
index 73e5183..96028c3 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/DatePickerRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/DatePickerRenderer.cs
@@ -42,13 +42,18 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override EditText CreateNativeControl()
+ {
+ return new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var textField = new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ var textField = CreateNativeControl();
textField.SetOnClickListener(TextFieldClickHandler.Instance);
SetNativeControl(textField);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/EditorRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/EditorRenderer.cs
index 14078ab..c9b596b 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/EditorRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/EditorRenderer.cs
@@ -33,6 +33,11 @@ namespace Xamarin.Forms.Platform.Android
((IElementController)Element).SetValueFromRenderer(Editor.TextProperty, s.ToString());
}
+ protected override EditorEditText CreateNativeControl()
+ {
+ return new EditorEditText(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
@@ -42,7 +47,7 @@ namespace Xamarin.Forms.Platform.Android
EditorEditText edit = Control;
if (edit == null)
{
- edit = new EditorEditText(Context);
+ edit = CreateNativeControl();
SetNativeControl(edit);
edit.AddTextChangedListener(this);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/EntryRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/EntryRenderer.cs
index c1b0b5e..c1c24a8 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/EntryRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/EntryRenderer.cs
@@ -49,6 +49,11 @@ namespace Xamarin.Forms.Platform.Android
((IElementController)Element).SetValueFromRenderer(Entry.TextProperty, s.ToString());
}
+ protected override EntryEditText CreateNativeControl()
+ {
+ return new EntryEditText(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
@@ -57,7 +62,7 @@ namespace Xamarin.Forms.Platform.Android
if (e.OldElement == null)
{
- _textView = new EntryEditText(Context);
+ _textView = CreateNativeControl();
_textView.ImeOptions = ImeAction.Done;
_textView.AddTextChangedListener(this);
_textView.SetOnEditorActionListener(this);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
index 1f8a776..e3c6829 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
@@ -28,13 +28,18 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override AImageView CreateNativeControl()
+ {
+ return new FormsImageView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var view = new FormsImageView(Context);
+ var view = CreateNativeControl();
SetNativeControl(view);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs
index 0be9740..c544a23 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/LabelRenderer.cs
@@ -67,12 +67,17 @@ namespace Xamarin.Forms.Platform.Android
return result;
}
+ protected override TextView CreateNativeControl()
+ {
+ return new FormsTextView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (_view == null)
{
- _view = new FormsTextView(Context);
+ _view = (FormsTextView)CreateNativeControl();
_labelTextColorDefault = _view.TextColors;
SetNativeControl(_view);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
index f835192..1054e1e 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
@@ -95,6 +95,11 @@ namespace Xamarin.Forms.Platform.Android
_adapter.IsAttachedToWindow = _isAttached;
}
+ protected override AListView CreateNativeControl()
+ {
+ return new AListView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
@@ -116,7 +121,7 @@ namespace Xamarin.Forms.Platform.Android
if (nativeListView == null)
{
var ctx = Context;
- nativeListView = new AListView(ctx);
+ nativeListView = CreateNativeControl();
_refresh = new SwipeRefreshLayout(ctx);
_refresh.SetOnRefreshListener(this);
_refresh.AddView(nativeListView, LayoutParams.MatchParent);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/NavigationMenuRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/NavigationMenuRenderer.cs
index 92a6511..c7e45ad 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/NavigationMenuRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/NavigationMenuRenderer.cs
@@ -26,13 +26,18 @@ namespace Xamarin.Forms.Platform.Android
get { return Element as NavigationMenu; }
}
+ protected override AView CreateNativeControl()
+ {
+ return new GridView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var grid = new GridView(Context);
+ var grid = (GridView)CreateNativeControl();
grid.SetVerticalSpacing(20);
SetNativeControl(grid);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/OpenGLViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/OpenGLViewRenderer.cs
index 0bddfb5..a97a208 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/OpenGLViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/OpenGLViewRenderer.cs
@@ -28,6 +28,11 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override GLSurfaceView CreateNativeControl()
+ {
+ return new GLSurfaceView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<OpenGLView> e)
{
base.OnElementChanged(e);
@@ -40,7 +45,7 @@ namespace Xamarin.Forms.Platform.Android
GLSurfaceView surfaceView = Control;
if (surfaceView == null)
{
- surfaceView = new GLSurfaceView(Context);
+ surfaceView = CreateNativeControl();
surfaceView.SetEGLContextClientVersion(2);
SetNativeControl(surfaceView);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/PickerRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/PickerRenderer.cs
index f2abe9d..b6d8171 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/PickerRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/PickerRenderer.cs
@@ -36,6 +36,11 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override EditText CreateNativeControl()
+ {
+ return new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
if (e.OldElement != null)
@@ -46,7 +51,7 @@ namespace Xamarin.Forms.Platform.Android
((ObservableList<string>)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
if (Control == null)
{
- var textField = new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ var textField = CreateNativeControl();
textField.SetOnClickListener(PickerListener.Instance);
_textColorSwitcher = new TextColorSwitcher(textField.TextColors);
SetNativeControl(textField);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs
index 865732f..63316a2 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs
@@ -10,13 +10,18 @@ namespace Xamarin.Forms.Platform.Android
AutoPackage = false;
}
+ protected override AProgressBar CreateNativeControl()
+ {
+ return new AProgressBar(Context, null, global::Android.Resource.Attribute.ProgressBarStyleHorizontal) { Indeterminate = false, Max = 10000 };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<ProgressBar> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var progressBar = new AProgressBar(Context, null, global::Android.Resource.Attribute.ProgressBarStyleHorizontal) { Indeterminate = false, Max = 10000 };
+ var progressBar = CreateNativeControl();
SetNativeControl(progressBar);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/SearchBarRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/SearchBarRenderer.cs
index 5e49895..468710c 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/SearchBarRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/SearchBarRenderer.cs
@@ -1,3 +1,4 @@
+using System;
using System.ComponentModel;
using System.Linq;
using Android.Content.Res;
@@ -36,6 +37,11 @@ namespace Xamarin.Forms.Platform.Android
return true;
}
+ protected override SearchView CreateNativeControl()
+ {
+ return new SearchView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
@@ -46,7 +52,7 @@ namespace Xamarin.Forms.Platform.Android
if (searchView == null)
{
- searchView = new SearchView(Context);
+ searchView = CreateNativeControl();
searchView.SetIconifiedByDefault(false);
searchView.Iconified = false;
SetNativeControl(searchView);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/SliderRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/SliderRenderer.cs
index dbe1887..5df5bf3 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/SliderRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/SliderRenderer.cs
@@ -34,13 +34,18 @@ namespace Xamarin.Forms.Platform.Android
{
}
+ protected override SeekBar CreateNativeControl()
+ {
+ return new FormsSeekBar(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var seekBar = new FormsSeekBar(Context);
+ var seekBar = CreateNativeControl();
SetNativeControl(seekBar);
seekBar.Max = 1000;
diff --git a/Xamarin.Forms.Platform.Android/Renderers/StepperRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/StepperRenderer.cs
index 70eed60..88b5fd7 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/StepperRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/StepperRenderer.cs
@@ -16,6 +16,11 @@ namespace Xamarin.Forms.Platform.Android
AutoPackage = false;
}
+ protected override LinearLayout CreateNativeControl()
+ {
+ return new LinearLayout(Context) { Orientation = Orientation.Horizontal };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e)
{
base.OnElementChanged(e);
@@ -31,7 +36,7 @@ namespace Xamarin.Forms.Platform.Android
_upButton.SetOnClickListener(StepperListener.Instance);
_upButton.SetHeight((int)Context.ToPixels(10.0));
- var layout = new LinearLayout(Context) { Orientation = Orientation.Horizontal };
+ var layout = CreateNativeControl();
layout.AddView(_downButton);
layout.AddView(_upButton);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/SwitchRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/SwitchRenderer.cs
index 39916b5..2c0b014 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/SwitchRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/SwitchRenderer.cs
@@ -47,6 +47,11 @@ namespace Xamarin.Forms.Platform.Android
base.Dispose(disposing);
}
+ protected override ASwitch CreateNativeControl()
+ {
+ return new ASwitch(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
{
base.OnElementChanged(e);
@@ -58,7 +63,7 @@ namespace Xamarin.Forms.Platform.Android
{
if (Control == null)
{
- var aswitch = new ASwitch(Context);
+ var aswitch = CreateNativeControl();
aswitch.SetOnCheckedChangeListener(this);
SetNativeControl(aswitch);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/TableViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/TableViewRenderer.cs
index e4017a7..2ac8efa 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/TableViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/TableViewRenderer.cs
@@ -21,6 +21,11 @@ namespace Xamarin.Forms.Platform.Android
return new Size(40, 40);
}
+ protected override AListView CreateNativeControl()
+ {
+ return new AListView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
{
base.OnElementChanged(e);
@@ -28,7 +33,7 @@ namespace Xamarin.Forms.Platform.Android
AListView listView = Control;
if (listView == null)
{
- listView = new AListView(Context);
+ listView = CreateNativeControl();
SetNativeControl(listView);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/TimePickerRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/TimePickerRenderer.cs
index 2b33acc..2bd60a7 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/TimePickerRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/TimePickerRenderer.cs
@@ -34,13 +34,18 @@ namespace Xamarin.Forms.Platform.Android
_dialog = null;
}
+ protected override EditText CreateNativeControl()
+ {
+ return new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
- var textField = new EditText(Context) { Focusable = false, Clickable = true, Tag = this };
+ var textField = CreateNativeControl();
textField.SetOnClickListener(TimePickerListener.Instance);
SetNativeControl(textField);
diff --git a/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs
index 24a5af5..bd5b805 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs
@@ -56,13 +56,18 @@ namespace Xamarin.Forms.Platform.Android
return new Size(Context.ToPixels(40), Context.ToPixels(40));
}
+ protected override AWebView CreateNativeControl()
+ {
+ return new AWebView(Context);
+ }
+
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
- var webView = new AWebView(Context);
+ var webView = CreateNativeControl();
#pragma warning disable 618 // This can probably be replaced with LinearLayout(LayoutParams.MatchParent, LayoutParams.MatchParent); just need to test that theory
webView.LayoutParameters = new global::Android.Widget.AbsoluteLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent, 0, 0);
#pragma warning restore 618
diff --git a/Xamarin.Forms.Platform.Android/ViewRenderer.cs b/Xamarin.Forms.Platform.Android/ViewRenderer.cs
index 63fef49..f285d6d 100644
--- a/Xamarin.Forms.Platform.Android/ViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/ViewRenderer.cs
@@ -13,6 +13,8 @@ namespace Xamarin.Forms.Platform.Android
public abstract class ViewRenderer<TView, TNativeView> : VisualElementRenderer<TView>, AView.IOnFocusChangeListener where TView : View where TNativeView : AView
{
+ protected abstract TNativeView CreateNativeControl();
+
ViewGroup _container;
bool _disposed;