Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you set min and max dates in an Android DatePicker?

I am using Android's default date picker and my min supported SDK is 10 and I want to set the min and the max dates of the date picker.

Here is what I have in my MainActivity class after the onCreate method:

private void registerButtonListeners() {
    Calendar.setOnClickListener(new View.OnClickListener() 
    {   
        @Override
        public void onClick(View v) {
            showDialog(DATE_PICKER_DIALOG);
        }
    });
}

@Override
protected Dialog onCreateDialog(int id)
{
    switch(id)
    {
    case DATE_PICKER_DIALOG: return showDatePicker();

    }
    return super.onCreateDialog(id);
}
private DatePickerDialog showDatePicker()
{
        DatePickerDialog datePicker= new DatePickerDialog(MainActivity.this,android.R.style.Theme_Holo_Dialog_NoActionBar_MinWidth,new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                mCalendar.set(Calendar.YEAR,year);
                mCalendar.set(Calendar.MONTH,monthOfYear);
                mCalendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
                updateDateText();

            }
        },mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH));


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        {
            long d=1356994800000L;
            //datePicker.getDatePicker().setMinDate(d);
            //datePicker.getDatePicker().setMaxDate(1546210800000L);

        }
        return datePicker;
}
like image 378
denza Avatar asked Dec 28 '13 10:12

denza


2 Answers

You can get the underlying DatePicker from a DatePickerDialog (by simply calling getDatePicker()) and set its bounds using:

  • setMinDate(long minDate)
  • setMaxDate(long maxDate)

Where the argument is the usual number of milliseconds since January 1, 1970 00:00:00 in the default time zone. You'll still have to calculate these values of course, but that should be trivial to do with the Calendar class: just pass current date and add or substract x years from that..

like image 155
SweetWisher ツ Avatar answered Sep 18 '22 07:09

SweetWisher ツ


In the default DatePicker of iOS it provides the feature of setting min. and max. date for the Date picker. The same feature is also available in Android application development but it is available for Android API 11 and above. It means that the feature of min and max date range won’t work in devices below Android API 11.

To overcome this kind of issue and to support this feature in all the Android devices including devices below Android API 11, we had to extend the “DatePickerDialog” class for providing the facility of setting the min and max date range that can be selected. Check the link given below-

How to make a Custom DatePicker control with maximum and minimum date range in Android application

For explanation of the implementation please check below link-

Explain the implementation of Custom DatePicker in our application

like image 30
Kanwaljit Singh Avatar answered Sep 18 '22 07:09

Kanwaljit Singh