summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs55
1 files changed, 55 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs b/Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs
new file mode 100644
index 00000000..bba9d260
--- /dev/null
+++ b/Xamarin.Forms.Platform.Android/Cells/SwitchCellRenderer.cs
@@ -0,0 +1,55 @@
+using System.ComponentModel;
+using Android.Content;
+using Android.Views;
+using AView = Android.Views.View;
+using ASwitch = Android.Widget.Switch;
+
+namespace Xamarin.Forms.Platform.Android
+{
+ public class SwitchCellRenderer : CellRenderer
+ {
+ const double DefaultHeight = 30;
+ SwitchCellView _view;
+
+ protected override AView GetCellCore(Cell item, AView convertView, ViewGroup parent, Context context)
+ {
+ var cell = (SwitchCell)Cell;
+
+ if ((_view = convertView as SwitchCellView) == null)
+ _view = new SwitchCellView(context, item);
+
+ _view.Cell = cell;
+
+ UpdateText();
+ UpdateChecked();
+ UpdateHeight();
+
+ return _view;
+ }
+
+ protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs args)
+ {
+ if (args.PropertyName == SwitchCell.TextProperty.PropertyName)
+ UpdateText();
+ else if (args.PropertyName == SwitchCell.OnProperty.PropertyName)
+ UpdateChecked();
+ else if (args.PropertyName == "RenderHeight")
+ UpdateHeight();
+ }
+
+ void UpdateChecked()
+ {
+ ((ASwitch)_view.AccessoryView).Checked = ((SwitchCell)Cell).On;
+ }
+
+ void UpdateHeight()
+ {
+ _view.SetRenderHeight(Cell.RenderHeight);
+ }
+
+ void UpdateText()
+ {
+ _view.MainText = ((SwitchCell)Cell).Text;
+ }
+ }
+} \ No newline at end of file