如何在 MaterialCalenderView 中 select 多个事件日期

How to select multiple event date in MaterialCalenderView

我正在使用 MaterialCalendarView 库,我想 select 有问题的事件日期(用户不会在 运行 时间内 select ),这将是多个,阅读文档后,我看到了四个案例。

  1. SELECTION_MODE_NONE
  2. SELECTION_MODE_SINGLE
  3. SELECTION_MODE_RANGE
  4. SELECTION_MODE_MULTIPLE

我使用 SELECTION_MODE_NONE 因为我不想让用户 select 约会。 我试过了,但它没有显示我过去的 select 天。

private MaterialCalendarView materialCalendarView;
materialCalendarView = view.findViewById(R.id.newCal);
 Calendar calendar = Calendar.getInstance();
    calendar.set(2017, 12, 1);
    calendar.set(2017, 12, 7);
    calendar.set(2017, 12, 8);
    calendar.set(2017, 12, 9);
    calendar.set(2017, 12, 10);


    materialCalendarView.addDecorator(new CurrentDayDecatator(getActivity()));
    materialCalendarView.setDateSelected(calendar, true);
    materialCalendarView.setSelectionMode(MaterialCalendarView.SELECTION_MODE_NONE);

如何实现?我哪里错了?

更新: 在 Umar 和 Manny 登录后,我更新了我的代码:

materialCalendarView.setSelectionMode(MaterialCalendarView.SELECTION_MODE_NONE);

    Calendar calendar = Calendar.getInstance();
    calendar.set(2017, 12, 14);

    Calendar calendar2 = Calendar.getInstance();
    calendar.set(2017, 12, 15);

    Calendar calendar3 = Calendar.getInstance();
    calendar.set(2017, 12, 16);

    Calendar calendar4 = Calendar.getInstance();
    calendar.set(2017, 12, 17);


    materialCalendarView.addDecorator(new CurrentDayDecatator(getActivity()));
    materialCalendarView.setDateSelected(calendar, true);
    materialCalendarView.setDateSelected(calendar2, true);
    materialCalendarView.setDateSelected(calendar3, true);
    materialCalendarView.setDateSelected(calendar4, true);

所以,现在我只得到最后一个日期 selected,即 calendar4。但我仍然无法 select 多个日期。并且默认情况下 materialCalendarView selects 今天的日期。

您正在为 Calendar 对象的同一实例设置日期。您需要多个日历对象,然后将这些对象设置为 materialCalenderView

Calendar calendar = Calendar.getInstance();
calendar.set(2017, 12, 1);

Calendar calendar2 = Calendar.getInstance();
    calendar2.set(2017, 12, 7);

materialCalendarView.setDateSelected(calendar, true);
materialCalendarView.setDateSelected(calendar2, true);

好的,经过大量调整并根据 Manny 和 Umar 的建议,我终于找到了如何在 materialCalendarView 中设置多天的方法。原来是这样。

  1. 我不希望用户 select 日历中的日期,所以在我的代码中添加了这一行:

    materialCalendarView.setSelectionMode (MaterialCalendarView.SELECTION_MODE_NONE);
    
  2. 现在我想设置多个日期,为此我正在创建多个日历对象并像这样在其中填充日期...

    Calendar calendar = Calendar.getInstance();
    calendar.set(2017, 11, 14);
    
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(2017, 11, 16);
    
  3. 最后是 select 多个日期,但也是 select 今天的日期,这不是问题。但是现在当我将月份设为 12(十二月)时,它显示下个月 12+1,这意味着明年一月。因此,为此我传递的值小于我想要的值。

最终代码:

materialCalendarView.setSelectionMode (MaterialCalendarView.SELECTION_MODE_NONE);

    Calendar calendar = Calendar.getInstance();
    calendar.set(2017, 11, 14);

    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(2017, 11, 16);

    materialCalendarView.setDateSelected(calendar, true);
    materialCalendarView.setDateSelected(calendar1, true);

谢谢 Manny 和 Umar :)