我在我的活动中使用DatePickerDialog,
我想按用户设置DatePickerDialog的日期限制。
他们不应该选择超过当前日期的日期。
我的DatePickerDialog java代码
edittodate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
edittodate.setText("");
final Calendar mcurrentDate=Calendar.getInstance();
int mYear=mcurrentDate.get(Calendar.YEAR);
int mMonth=mcurrentDate.get(Calendar.MONTH);
int mDay=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final Date curDate= new Date();
DatePickerDialog mDatePicker=new DatePickerDialog(ViewChallan.this, new OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
// TODO Auto-generated method stub
/* Your code to get date and time */
if(mcurrentDate.before(curDate))
{
Toast.makeText(context, "Invalid Date", Toast.LENGTH_LONG).show();
}
else
{
selectedmonth= selectedmonth+1;
edittodate.setText(selectedyear+"-"+selectedmonth+"-"+selectedday);
}
}
},mYear, mMonth, mDay);
mDatePicker.setTitle("Select date");
// this code below is not hiding calendar,stopping the application
if (Build.VERSION.SDK_INT >= 11) {
mDatePicker.getDatePicker().setCalendarViewShown(false);
}
mDatePicker.show();
}
});
请建议我如何设置限制日期
提前致谢
答案 0 :(得分:3)
您可以使用setMinDate(long)
和setMaxDate(long)
方法。这两个都适用于API级别11及更高级别。由于您使用的是DatePickerDialog
,因此您需要先调用DatePicker
方法获取基础getDatePicker()
。
dpdialog.getDatePicker().setMinDate(minDate);
dpdialog.getDatePicker().setmaxDate(maxDate);
来源:Set Limit on the DatePickerDialog in Android?
修改:
Date today = new Date();
Calendar c = Calendar.getInstance();
c.setTime(today);
c.add( Calendar.MONTH, -6 ) // Subtract 6 months
long minDate = c.getTime().getTime() // Twice!
答案 1 :(得分:0)
设置DatePickerDialog的最小值和最大日期是不够的。用户可以点击年份并选择任何其他年份。
您还应该在DatePicker上设置年份范围,如下所示:
datePicker.setYearRange(calendar.get(Calendar.YEAR), calendar.get(Calendar.YEAR) + 1);