我在Xamarin Forms项目中使用了24小时TimePicker
。 TimePicker
在我的iOS项目中完美运行,但在Android上,UnFocused
事件未被调用,当我点击PropertyChange
或{{{{}}时,Ok
事件也未被触发1}}不改变时间。
时间选择器打开时,XAML中绑定了时间值,我希望在点击Cancel
时设置相同的时间而不更改时间。
假设我已经从XAML绑定了7小时,Ok
会在选中TimePicker
的情况下打开,但是如果我点击7:00
和Ok
而不更改它设置的时间Cancel
}。
以下是我在Android中的24小时0: 00
实施:
TimePicker
当我点击 public class TimePicker24Hours : ViewRenderer<TimePicker, Android.Widget.EditText>, TimePickerDialog.IOnTimeSetListener, IJavaObject, IDisposable
{
private TimePickerDialog dialog = null;
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
{
base.OnElementChanged(e);
this.SetNativeControl(new Android.Widget.EditText(Forms.Context));
this.Control.Click += Control_Click;
this.Control.Text = DateTime.Now.ToString("HH:mm");
this.Control.KeyListener = null;
this.Control.FocusChange += Control_FocusChange;
}
void Control_FocusChange(object sender, Android.Views.View.FocusChangeEventArgs e)
{
if (e.HasFocus)
ShowTimePicker();
}
void Control_Click(object sender, EventArgs e)
{
ShowTimePicker();
}
private void ShowTimePicker()
{
if (dialog == null)
{
dialog = new TimePickerDialog(Forms.Context, this, 0, 0, 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);
this.Control.Text = time.ToString(@"hh\:mm");
}
或OnTimeSet
时会调用Ok
方法,但如果我不更改,则Cancel
小时为0
分钟时间。
当TimePicker未聚焦时,Android实现中的0
事件不会被触发。