如何在android CalendarView中显示特定月份?

时间:2016-08-21 09:45:13

标签: android android-calendar calendarview

我想使用Android CalendarView向用户显示特定月份。请帮我实现这个功能。我写了下面的代码,但它没有用。

  CalendarView calendarView = (CalendarView) findViewById(R.id.calendarView);
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(2016, 6, 1);

    Calendar calendar2 = Calendar.getInstance();
    calendar2.set(2016, 6, 30);

    calendarView.setMinDate(calendar1.DATE);
    calendarView.setMaxDate(calendar2.DATE);

当我尝试使用上面的代码运行应用程序时,以下输出即将到来。

enter image description here

2 个答案:

答案 0 :(得分:2)

提示:Calendar.DATE的价值是多少?文档说5,所以当你调用这个方法时,你说的是“1970年1月1日过去5毫秒。”

  

setMinDate(long minDate)

     

设置此CalendarView支持的最小日期,自1970年1月1日00:00:00起,在getDefault()时区内以毫秒为单位。

基本上,这是一个静态字段,可能不是您想要的值。

也许您希望getTimeInMillis()为您设置日期的值返回long

calendarView.setMinDate(calendar1.getTimeInMillis());
calendarView.setMaxDate(calendar2.getTimeInMillis());

答案 1 :(得分:0)

根据我的经验,我总是使用Calender.set(Calendar.YEAR,year)方法设置年份和Calender.set(Calendar.MONTH,月份)方法来设置月份和Calender.set(Calendar.DAY,day)设定日期的方法。所以我建议你这样做,

    String date = "1/6/2016";
    String parts[] = date.split("/");
    int day = Integer.parseInt(parts[0]);
    int month = Integer.parseInt(parts[1]);
    int year = Integer.parseInt(parts[2]);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.MONTH, month);
    calendar.set(Calendar.DAY_OF_MONTH, day);

    long milliTime = calendar.getTimeInMillis();

现在通过执行

在日历视图中设置所选日期
  mCalendarView.setDate (milliTime, true, true);