Android Material Design Datepicker with AppCompat

Update:

As well pointed out by jfcartier, there’s now also MaterialDateTimePicker. It’s probably a nicer solution than the one below since it has a nice themable API.


You could try the android-betterpickers library. It has a CalendarDatePickerDialog widget that looks like the one you want. It provides a light and a dark theme, but for customizing colors you’d have to add it as a library project and change the code yourself.

Usage is pretty straightforward once you add the library to your project.

    // Create date picker listener.
    CalendarDatePickerDialog.OnDateSetListener dateSetListener = new CalendarDatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
            // Set date from user input.
            Calendar date = Calendar.getInstance();
            date.set(Calendar.HOUR_OF_DAY, 9);
            date.set(Calendar.MINUTE, 0);
            date.set(Calendar.YEAR, year);
            date.set(Calendar.MONTH, monthOfYear);
            date.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            // Do as you please with the date.
        }
    };

    // Create dismiss listener.
    CalendarDatePickerDialog.OnDialogDismissListener dismissListener = new CalendarDatePickerDialog.OnDialogDismissListener() {
        @Override
        public void onDialogDismiss(DialogInterface dialoginterface) {
            // Do something when the user dismisses the dialog.
        }
    };

    // Show date picker dialog.
    CalendarDatePickerDialog dialog = new CalendarDatePickerDialog();
    dialog.setOnDateSetListener(dateSetListener);
    dialog.setOnDismissListener(dismissListener);
    dialog.setThemeDark(false);
    dialog.show(getSupportFragmentManager(), "DATE_PICKER_TAG");

The end result should look like this (sorry for the poor quality).

AOSP Calendar Picker

Leave a Comment