Xamarin.forms 如何自定义时间间隔Xamarin表单?

Xamarin.forms 如何自定义时间间隔Xamarin表单?,xamarin.forms,Xamarin.forms,我使用的是Xamarin的PCL项目。我想在android和IOS平台上定制30分钟间隔的时间选择器 这怎么可能。我正在使用Android的自定义代码: public class BorderlessTimePickerRenderer : TimePickerRenderer { protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) { base

我使用的是Xamarin的PCL项目。我想在android和IOS平台上定制30分钟间隔的时间选择器

这怎么可能。我正在使用Android的自定义代码:

public class BorderlessTimePickerRenderer : TimePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);
        if (Control != null)
        {
            Control.SetBackground(Android.Support.V4.Content.ContextCompat.GetDrawable(this.Context, Android.Resource.Color.Transparent));
            var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
            layoutParams.SetMargins(0, 0, 0, 0);
            LayoutParameters = layoutParams;
            Control.LayoutParameters = layoutParams;
            Control.SetPadding(0, 0, 0, 0);
            SetPadding(0, 0, 0, 0);
        }
    }
}

以下显示了自定义渲染器中的iOS实现:

public class BorderlessTimePickerRenderer : TimePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);

        Control.Layer.BorderWidth = 0;
        Control.BorderStyle = UITextBorderStyle.None;


        var timePicker = (UIDatePicker)Control.InputView;
        timePicker.MinuteInterval = 30;
    }
}

如您所见,我们将控件的InputView强制转换为UIDatePicker,然后我们可以访问属性MinuteInterval。

请您也共享Android代码好吗@Sebastian Jensen.你好,有可能只显示0和30的两个实例吗?嘿,你能告诉我,如果我只想显示两个值而不是多次显示0和30,那怎么可能呢?为此,你必须编写自己的逻辑或自己的控件来处理这个问题。本机时间选择器没有此选项。
public class BorderlessTimePickerRenderer : TimePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);

        Control.Layer.BorderWidth = 0;
        Control.BorderStyle = UITextBorderStyle.None;


        var timePicker = (UIDatePicker)Control.InputView;
        timePicker.MinuteInterval = 30;
    }
}