select 出生日期对话框
select date of birth dialog
如何创建我可以 select 出生日期:
的提醒对话框
我希望以后选择日期不是不可能的。
如何在日期对话框中设置限制
这是我的代码
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DATE);
return new DatePickerDialog(this, mDatePickerListener, yy, mm, dd);
}
return null;
}
只需添加这个
dialog.getDatePicker().setMaxDate(new Date().getTime());
我建议使用非常酷的 Material 设计日期选择器 library,它向后兼容。
您需要做的就是将以下行添加到您的 gradle 依赖项列表中:
compile 'com.wdullaer:materialdatetimepicker:1.5.2' // The latest at this point.
然后您只需使用 DatePickerDialog 的 setMinDate() 和 setYearRange() 方法即可。
像这样:
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePickerDialog datePickerDialog, int i, int i1, int i2) {
// Do whatever you want when the date is selected.
}
}, calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.setMinDate(calendar);
datePickerDialog.setYearRange(calendar.get(Calendar.YEAR),
calendar.get(Calendar.YEAR) + YEARS_IN_THE_FUTURE); // You can add your value for YEARS_IN_THE_FUTURE.
这有帮助吗?
如果您在代码中使用 kotlin
那么这会对您有所帮助
注意:: textView 保存要设置日期的文本的引用
private fun openDobPicker(textView: TextView) {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val dpd = DatePickerDialog(requireActivity(), DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
val date = "${dayOfMonth}/${monthOfYear}/${year}"
textView.text = date
}, year, month, day)
//restrict calendar to show future dates
dpd.datePicker.maxDate = Date().time
//If you want to limit the minimum date then do this
//dpd.datePicker.minDate = PASSED_MIN_DATE_HERE
dpd.show()
}
如何创建我可以 select 出生日期:
的提醒对话框我希望以后选择日期不是不可能的。
如何在日期对话框中设置限制 这是我的代码
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DATE);
return new DatePickerDialog(this, mDatePickerListener, yy, mm, dd);
}
return null;
}
只需添加这个
dialog.getDatePicker().setMaxDate(new Date().getTime());
我建议使用非常酷的 Material 设计日期选择器 library,它向后兼容。
您需要做的就是将以下行添加到您的 gradle 依赖项列表中:
compile 'com.wdullaer:materialdatetimepicker:1.5.2' // The latest at this point.
然后您只需使用 DatePickerDialog 的 setMinDate() 和 setYearRange() 方法即可。
像这样:
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePickerDialog datePickerDialog, int i, int i1, int i2) {
// Do whatever you want when the date is selected.
}
}, calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.setMinDate(calendar);
datePickerDialog.setYearRange(calendar.get(Calendar.YEAR),
calendar.get(Calendar.YEAR) + YEARS_IN_THE_FUTURE); // You can add your value for YEARS_IN_THE_FUTURE.
这有帮助吗?
如果您在代码中使用 kotlin
那么这会对您有所帮助
注意:: textView 保存要设置日期的文本的引用
private fun openDobPicker(textView: TextView) {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val dpd = DatePickerDialog(requireActivity(), DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
val date = "${dayOfMonth}/${monthOfYear}/${year}"
textView.text = date
}, year, month, day)
//restrict calendar to show future dates
dpd.datePicker.maxDate = Date().time
//If you want to limit the minimum date then do this
//dpd.datePicker.minDate = PASSED_MIN_DATE_HERE
dpd.show()
}