相关疑难解决方法(0)

Android DatePickerDialog:设置选择的最小和最大日期

我知道这有很多问题,但没有一个解决方案适合我,所以这个问题.我想限制用户在今天之前选择日期,但我无法这样做.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我表现为:

DatePickerDialogFragment fragment = new DatePickerDialogFragment();
fragment.setListener(dateSetListener);
fragment.show(getSupportFragmentManager(), "Choose booking date");
Run Code Online (Sandbox Code Playgroud)

我希望用户不应该在今天之前选择日期.正如你所看到的,我setMinDate()用今天的时间调用了方法,但它没有效果.该对话框显示今天之前的日期为灰色但可选择.

我也尝试按照一些stackoverflow答案中的建议进行子类DatePickerDialog和覆盖onDateChanged,但没有任何成功.

android android-datepicker

15
推荐指数
3
解决办法
3万
查看次数

在 Android DatePicker 自定义对话框中限制范围

我有有一个自定义的线性布局DatePicker,并TimePicker在它的小部件。这用作DateTime选择器。我想通过setMaxDate()和来限制 DatePicker setMinDate()。我已经做好了:

dp.setMaxDate(new DateTime().minusDays(1).getMillis());
dp.setMinDate(new DateTime().minusDays(30).getMillis());
Run Code Online (Sandbox Code Playgroud)

当对话框出现时,超出此范围的日期实际上是灰色的。但我仍然可以选择一个灰色的日期。我偶然发现了这一点。但是,带有日期选择器的自定义布局的解决方法是什么?

android datepicker android-datepicker material-components material-components-android

8
推荐指数
3
解决办法
6281
查看次数