Android :( CalendarView)无法更改月份,选择日期

时间:2016-11-07 05:48:46

标签: android calendar calendarview

我夸大了一个简单的CalendarView:

<CalendarView
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    style="@android:style/Widget.CalendarView"
    android:focusedMonthDateColor="@android:color/primary_text_dark"
    android:unfocusedMonthDateColor="@color/light_gray"/>

在我的测试设备上,当我尝试选择当前日期以外的任何日期或通过滚动更改月份时,没有任何反应

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您要实现两件事,

  1. 日期更改时触发事件
  2. 当月份改变时触发事件

捕获数据更改事件

Android的CalenderView提供了onDateChangeListener函数。您可以按以下方式使用它:

calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int dayOfMonth) {

            // do something here
        }
    }); 

捕获月更改事件

不幸的是,您无法使用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();
 }
}); 

日期更改侦听器也可以类似的方式实现。

答案 1 :(得分:0)

我建议您使用https://github.com/wdullaer/MaterialDateTimePicker

它是高度可定制的CalendarView for android,并且有很好的文档。 非常容易使用我在我的大多数项目中使用它。