gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:51:34 25 4
gpt4 key购买 nike

这是新的默认DatePickerDialog小部件从 Android 5.0 开始看起来像:

enter image description here

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

enter image description here

我有两个选择:

  • 使用其他人开发的具有与上述相同外观和风格的现有日历小部件。
  • 创建我自己的具有完整日历功能的日历小部件。

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

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

  • 我用过 NumberPicker里面的小部件 DialogFragment ,我用过 setMinValue()setMaxValue()设置每个 NumberPicker 的范围。
  • 当年份发生变化时(比如从 2​​011 年到 2012 年),我会计算数字当月的天数,使用

       cal = new GregorianCalendar(y, m, d);
    daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

    描述here .

  • 当用户从十二月滚动到一月或一月滚动到十二月时,我以编程方式滚动年份选择器以增加或按照说明分别递减 here .
  • 使用 setWrapSelectorWheel() 可以防止日、月和年的选择器滚动到它们的最小值和最大值之外。 .

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

编辑:

虽然给定的答案有效,但值得注意的是还有更好的方法:包装 DatePickerDialogFragment 中。

最佳答案

您可以使用 API 日期选择器并使用此构造函数告诉它使用 Holo Design: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

关于java - Android 自定义日历/日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com