Android datepicker min max date before api level 11

前端 未结 7 529
生来不讨喜
生来不讨喜 2020-11-27 06:11

I am trying to set the min and max date of the date picker in Android to before API level 11. I used the following code:

mDatePickerField = startDatePickerDi         


        
相关标签:
7条回答
  • 2020-11-27 06:43

    This DatePicker custom class Allow us Specify Max and Min Date

    public class DatePickerDialogWithMaxMinRange extends DatePickerDialog {
    
     static int maxYear=2005; 
     static int maxMonth=11;
     static int maxDay=31;
    
     int minYear=1955;
     int minMonth=0;
     int minDay=1;
    
    
    public DatePickerDialogWithMaxMinRange(Context context,  OnDateSetListener callBack,int minYear,int minMonth,int minDay,int maxYear,int maxMonth,int maxDay) {
        super(context,callBack, maxYear, maxMonth, maxDay);
        this.minDay = minDay;
        this.minMonth = minMonth;
        this.minYear = minYear;
        DatePickerDialogWithMaxMinRange.maxDay = maxDay;
        DatePickerDialogWithMaxMinRange.maxMonth = maxMonth;
        DatePickerDialogWithMaxMinRange.maxYear = maxYear;
    }
    
    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        super.onDateChanged(view, year, monthOfYear, dayOfMonth);
    
            if (year > maxYear ||monthOfYear > maxMonth && year == maxYear||
                     dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){
                view.updateDate(maxYear, maxMonth, maxDay);
                }else if(year < minYear ||monthOfYear < minMonth && year == minYear||
                     dayOfMonth < minDay && year == minYear && monthOfYear == minMonth){
                 view.updateDate(minYear, minMonth, minDay );
                }
    }
    

    }

    // use this code in your Activity class or Fragment specify member as

    private int intCurrentYear;
    private int intCurrentMonth;
    private int intCurrentDay;
    private int intMaxYear;
    private int intMaxMonth;
    private int intMaxDay;
    private int intMinYear;
    private int intMinDay;
    private int intMinMonth;
    
        DatePickerDialogWithMaxMinRange datePickerDialog= null;
    DatePickerDialog.OnDateSetListener datePickerOnDateSetListener;
    Calendar myCalendar;
    

    // call this method in onCreate or where ever u want to..

    note: you need pass the listener custom datepickerdialog to update the date after select in datepicker dialog

    public void setDate() {
        /*
         * Initialise Listener for date set
         */
    
        datePickerOnDateSetListener = new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                edtTxtPlayerBirthDay.setText(new StringBuilder().append(year)
                        .append("-").append(monthOfYear + 1).append("-")
                        .append(dayOfMonth));
            }
        };
    
        // initialise DatePicker 
    
        myCalendar = Calendar.getInstance();
    
        intCurrentYear = myCalendar.get(Calendar.YEAR);
        intCurrentMonth = myCalendar.get(Calendar.MONTH);
        intCurrentDay = myCalendar.get(Calendar.DAY_OF_MONTH);
    
        intMaxYear =  intCurrentYear - 2000;
        intMaxMonth = intCurrentMonth;
        intMaxDay =  intCurrentDay;
    
        intMinYear =  intCurrentYear - 1950;
        intMinMonth = intCurrentMonth;
        intMinDay =  intCurrentDay; 
    
        datePickerDialog = new DatePickerDialogWithMaxMinRange(
                context, datePickerOnDateSetListener,intMinYear,intMinMonth,intMinDay,intMaxYear,intMaxMonth,intMaxDay);
    }
    

    when creating date picker pass the mindate and maxdate as per u r requirement for showing datepicker when button clicked or any other control put this code inside for that onclicklistener...

    datePickerDialog.show();
    
    0 讨论(0)
提交回复
热议问题