Created
August 22, 2018 19:44
-
-
Save pfaucon/007d5e0f00d72fe96ec0229f0ded365b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Reflection; | |
using Android.App; | |
using Android.Content; | |
using Example.Droid.Renderers; | |
using Xamarin.Forms; | |
using Xamarin.Forms.Platform.Android; | |
[assembly: ExportRenderer(typeof(TimePicker), typeof(TimePicker24HRenderer))] | |
namespace Example.Droid.Renderers | |
{ | |
public class TimePicker24HRenderer : TimePickerRenderer, Android.Views.View.IOnClickListener, TimePickerDialog.IOnTimeSetListener | |
{ | |
public TimePicker24HRenderer(Context context) : base(context) | |
{ | |
} | |
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) | |
{ | |
base.OnElementChanged(e); | |
Control.SetOnClickListener(this); | |
} | |
public void OnClick(global::Android.Views.View v) | |
{ | |
TimePicker view = Element; | |
IElementController ElementController = Element as IElementController; | |
ElementController.SetValueFromRenderer(VisualElement.IsFocusedProperty, true); | |
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.NonPublic | |
| BindingFlags.GetField; | |
//Get private member _dialog | |
FieldInfo dialogField = typeof(TimePickerRenderer).GetField("_dialog", bindFlags); | |
//Get private member dialog if private _dialog not found | |
if (dialogField == null) | |
{ | |
dialogField = typeof(TimePickerRenderer).GetField("dialog", bindFlags); | |
} | |
if (dialogField != null) | |
{ | |
var _dialog = (AlertDialog)dialogField.GetValue(this); | |
_dialog = new TimePickerDialog(Context, this, view.Time.Hours, view.Time.Minutes, true); | |
_dialog.Show(); | |
} | |
} | |
public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute) | |
{ | |
var time = new TimeSpan(hourOfDay, minute, 0); | |
this.Element.SetValue(TimePicker.TimeProperty, time); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment