这个DatePicker自定义类允许我们指定最大和最小日期。
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 );
}
}
// 在您的Activity类或Fragment中使用此代码,将成员指定为
// 将代码放在以下位置
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;
// 在onCreate或其他你想要的地方调用此方法
注意:你需要将listener自定义datepickerdialog传递给datepicker dialog以在选择日期后更新日期
public void setDate() {
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));
}
};
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);
}
在创建日期选择器时,根据您的需求传递mindate和maxdate。
要在按钮单击或任何其他控件中显示日期选择器,请将以下代码放入onclicklistener中...
datePickerDialog.show();
newDate.after(calendar)
for settingMAX Date
andcalendar.after(newDate)
for settingMIN Date
- DeltaCap019