从CalendarView Android获取月份

时间:2017-03-06 21:44:37

标签: android date calendarview

我正在使用Android CalendarView创建一个简单的日历应用。当用户按下日历视图中的上一个或下一个按钮时,我需要获得月份。当用户单击这些按钮时,CalendarView没有任何方法可以获取月份,因此我尝试使用以下代码来提取月份。

ViewGroup vg = (ViewGroup) calendarView.getChildAt(0);
 View subView = vg.getChildAt(0);

但由于某种原因,ViewGroup持有DayPickerViewPager小部件和2个AppcompatImageButtons(前一个和下一个按钮),但没有TextView或类似的东西,其中包含实际的月份名称。

subView包含DayPickerViewPager。有谁知道如何在上一个/下一个按钮点击上获得月份?

提前谢谢

2 个答案:

答案 0 :(得分:0)

  

当用户点击这些按钮时,CalendarView没有任何方法来获取月份

我认为确实如此;至少在您选择给定日期时。

  

long getDate ()

     

以毫秒为单位获取所选日期

您可以将其处理为Calendar对象,您可以从中获取月份。

参考:Java - Milliseconds to Month/Year (not just the current time)

  

当用户按下日历视图中的上一个或下一个按钮时,我需要获得月份

您需要使用setOnDateChangeListener来捕获最终选择的日期。

当用户尚未进行选择时,为什么需要“下一个/上一个”按钮的动作事件并不清楚。

但是,你做到了,那么你需要在setOnClickListener这两个AppCompatImageButtons>>> numbers = [1, 2, 3] >>> numbers[0:0] = [4, 5, 6] >>> numbers [4, 5, 6, 1, 2, 3] 。但是,一旦你自己这样做,你将覆盖现有的点击监听器。

答案 1 :(得分:0)

不幸的是,您不能使用Android的默认CalenderView实施月份更改事件。但是,here可以使用另一种自定义的MaterialCalendarView,它同时提供日期和月份更改侦听器。

使用该视图的示例代码如下:

MaterialCalendarView calendarView = new MaterialCalendarView(getActivity());
calendarView.setOnMonthChangedListener(new OnMonthChangedListener() {
@Override
public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {
      // Do something here
      Date selectedDate = date.getDate();
}
});

还可以使用MaterialCalendarView以类似的方式实现日期更改侦听器。