11

我在 android 中使用 datePicker 根据用户选择的日期显示图像。我需要将所述日期限制在某些日子,例如 2010 年 1 月 1 日至 2010 年 12 月 31 日。我想的很简单,但我在哪里可以找到关于如何限制这些日期的答案。

有谁知道如何限制 Android DatePicker 的日期

4

5 回答 5

7

你可以设置:

dateDialog.getDatePicker().setMaxDate(new Date().getTime());

dateDialog.getDatePicker().setMinDate(new Date().getTime());

其中 dateDialog 是一个

new DatePickerDialog()

并且为 MaxDate 和 MinDate 设置的参数类型是long

于 2014-07-07T15:22:30.917 回答
1

回答可能为时已晚,但很容易为 设置minmax日期DatePickerDialog适用于所有 Android 版本。只需返回DatePickerDialog基于Android的版本

protected Dialog onCreateDialog(int id)
{
    switch ( id )
    {
        case DATE_DIALOG_ID:
            DatePickerDialog dialog = null;
            if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
            {
                dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
                    {
                        mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
                    }
                }, year, month - 1, date);
                Calendar currentDate = Calendar.getInstance();
                dialog.getDatePicker().setMaxDate(currentDate.getTimeInMillis());
                //If you need you can set min date too
            }
            else
            {
                dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
                    {
                        mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
                    }
                }, year, month - 1, date)
                {
                    @Override
                    public void onDateChanged(DatePicker view, int year, int month, int day)
                    {
                        if ( year <= maxYear && month + 1 <= maxMonth && date <= maxDate ) //meets your criteria
                        {
                            view.updateDate(year, month, date); //update the date picker to selected date
                        }
                        else
                        {
                            view.updateDate(maxYear, maxMonth - 1, maxDate); // or you update the date picker to previously selected date
                        }
                    }
                };
            }
            return dialog;
    }
    return null;
}
于 2013-08-30T19:56:27.983 回答
0

我想你必须实现你自己的DatePicker. 这背后的逻辑是:“只有少数开发人员会限制它们,DatePicker所以他们必须自己实现功能。”

于 2010-03-26T19:48:53.970 回答
0

为什么你不应该使用自定义选项设计像 DatePicker 这样的新布局。您可以使用 Spinners 和 Forloops。

于 2014-05-08T05:16:28.347 回答
0

你可以通过键入一个简单的行来实现这一点

mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
        mcurrentDate.add(Calendar.MONTH,6);
        mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());
于 2017-03-14T07:15:45.183 回答