android 如何在物料日历视图中选择多个事件日期

qcbq4gxm  于 2023-02-20  发布在  Android
关注(0)|答案(3)|浏览(173)

我正在使用MaterialCalendarView库,我想选择事件日期有问题(没有被用户在运行时选择),这将是多个,阅读文档后,我看到四个案例。
1.选择模式无
1.选择_模式_单次
1.选择模式范围
1.选择_模式_多重
我使用SELECTION_MODE_NONE,因为我不想让用户选择日期。我尝试了这个,但它没有显示我选择的日期。

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);

如何实现呢?我哪里错了?

更新:采取欧麦尔和曼尼登录后,我更新了我的代码如下:

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);

因此,现在我只获得最后选择的日期calendar4。但我仍然无法选择多个日期。默认情况下,materialCalendarView选择今天的日期。

fruv7luv

fruv7luv1#

您正在日历对象的同一示例上设置日期。您需要多个日历对象,然后将这些对象设置为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);
xdnvmnnf

xdnvmnnf2#

好了,在做了很多调整和Manny和Umar的建议之后,我终于找到了在materialCalendarView中设置多天的方法。
1.我不想让用户从日历中选择日期,所以在我的代码中添加了这一行:

materialCalendarView.setSelectionMode (MaterialCalendarView.SELECTION_MODE_NONE);

1.现在我想设置多个日期,为此我创建了多个日历对象,并像这样填充日期...

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

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

1.最后,它选择了多个日期,但是它也选择了今天的日期,这不是问题。但是现在当我把月份输入为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);

谢谢曼尼和欧麦尔:)

7y4bm7vi

7y4bm7vi3#

我正在试用这个库,遇到了这个问题。似乎这个库已经更新,这里提供的解决方案不再工作。
这是更新后的代码,在Kotlin里)

val calendarView = findViewById<MaterialCalendarView>(R.id.calendar_view)
    
    val day1 = CalendarDay.from(2023, 2, 15)
    val day2 = CalendarDay.from(2023, 2, 12)

    calendarView.selectionMode = MaterialCalendarView.SELECTION_MODE_MULTIPLE
    calendarView.setDateSelected(day1, true)
    calendarView.setDateSelected(day2, true)

相关问题