Xamarin Android C#:设置DatePickerDialog仅显示当前及未来日期
解决方案:无需自定义方法,直接用原生API实现
你不需要编写自定义方法,Xamarin.Android里的DatePickerDialog原生就支持限制可选日期范围,用SetMinDate方法就能搞定,具体步骤如下:
- 设置默认显示今天的日期:初始化弹窗时,把默认的年、月、日替换成当前日期(注意Android的月份是从0开始计数的,所以要减1)。
- 锁定最小可选日期为今天:通过
DatePickerDialog.DatePicker.SetMinDate()方法传入今天的毫秒级时间戳(从1970-01-01 UTC开始计算)。
修改后的完整代码:
private void EventpickdateButton_Click(object sender, EventArgs e) { // 获取当前日期 DateTime today = DateTime.Now; // 初始化弹窗,默认显示今天(Android月份从0开始,需减1) DatePickerDialog datePickerDialog = new DatePickerDialog(this.Activity, this, today.Year, today.Month - 1, today.Day); // 计算适配Android要求的今天毫秒时间戳 long todayMillis = (today.Ticks - new DateTime(1970, 1, 1).Ticks) / 10000; // 设置最小可选日期为今天 datePickerDialog.DatePicker.SetMinDate(todayMillis); datePickerDialog.Show(); }
补充说明
Xamarin.Android本质是对Android原生控件的C#绑定,所以Java中DatePicker的相关方法,在Xamarin里都能通过C#语法直接调用,不用额外写自定义逻辑。如果后续需要限制最大可选日期,同理用SetMaxDate()方法传入对应日期的毫秒时间戳即可。
内容的提问来源于stack exchange,提问作者Zeno
相关产品推荐
相关产品推荐

