Android 自定义日历/日期选择器

Android custom calendar / date picker

这是新的默认 DatePickerDialog 小部件从 Android 5.0 开始出现的样子:

我的项目经理不太喜欢这个。他们想要的是 Marshmallow & Lollipop 之前的 "old style" Holo 日期选择器。像这样:

我有两个选择:

如果我要创建自己的小部件,那么创建 UI 就足够简单了。我的问题是,如何为这样的日历编写业务逻辑,即如何用真实数据支持它?如何计算闰年和不同月份的天数? 最重要的是,我需要三个 NumberPicker在最小和最大范围方面保持同步。它应该NOT 无法滚动到最小和最大限制之外。这是我一直没能解决的问题。

这是我到目前为止所做的:

所以我的问题是,是否有我可以使用的像这个这样的预先存在的小部件?或者,有没有办法用真实的日历数据支持 NumberPickers,并让它们在最小和最大日期范围内同步滚动?请指导我。所有答案将不胜感激。

编辑:

虽然给定的答案有效,但值得注意的是还有更好的方法:将 DatePicker 包装在 DialogFragment.

您可以使用 API 日期选择器并使用此构造函数告诉它使用全息设计:DatePickerDialog (Context, int, DatePickerDialog.OnDateSetListener, int, int, int)

查看此问题的评论:DatePicker crash in samsung with android 5.0

您可能需要稍微调整一下主题。

以下是我们如何在实际中使用它:https://github.com/dmfs/opentasks/blob/master/src/org/dmfs/tasks/widget/TimeFieldEditor.java#L437