【发布时间】:2016-01-08 04:01:51
【问题描述】:
我知道对此有很多问题,但没有一个解决方案对我有用,所以这个问题。我想限制用户选择今天之前的日期,但我不能这样做。
public class DatePickerDialogFragment extends DialogFragment {
private OnDateSetListener listener;
public void setListener(OnDateSetListener listener) {
this.listener = listener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getContext(), listener, year, month, day);
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
return dialog;
}
}
我将其显示为:
DatePickerDialogFragment fragment = new DatePickerDialogFragment();
fragment.setListener(dateSetListener);
fragment.show(getSupportFragmentManager(), "Choose booking date");
我希望用户不能选择今天之前的日期。如您所见,我用今天的时间调用了setMinDate() 方法,但它没有效果。该对话框将今天之前的日期显示为灰色但可选择。
我还尝试按照一些 stackoverflow 答案中的建议对DatePickerDialog 进行子类化并覆盖onDateChanged,但没有任何成功。
【问题讨论】:
-
不是智能完成而是onDateSet,应该将结果与最小值和最大值进行比较
-
@Abdullah 你有没有为此找到任何解决办法?
-
@RethinavelPillai 我最终做了接受的帖子中提到的事情。
-
查看 mycustom datepickerdialog github.com/Redman1037/EightFoldsDatePickerDialog
标签: android android-datepicker