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()
    }