设置android datepicker日期限制

问题描述:

我在android中使用datePicker来显示基于用户选择日期的图像。我需要将上述日期限制在某些日期,例如2010年1月1日至2010年12月31日。简单,因为我认为但没有我在哪里可以找到如何限制这些日期的答案。设置android datepicker日期限制

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

+1

我设法编程设定的最小,最大可选的日期,及还设置了DatePicker的查看当前(默认)日期:http://stackoverflow.com/问题/ 6421874 /如何获取date-set-in-date-date-date-set-in-date-date-date-set-in-android/7961268#7961268 – 2011-11-02 14:39:06

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

+1

另外对于XML还有一些额外的属性可用,如endYear beginYear,你可以使用它界限。 – Pentium10 2010-03-26 20:12:58

+0

我在哪里可以找到结束年份的信息开始年份,听起来像那样会很好地工作。 我害怕答案实现我自己的,希望这个XML属性将泛出。 – matt 2010-03-26 20:50:14

+0

endYear和beginYear界限只能用于widget而不是我正在使用的实际的datePicker对话框。我会看看如何实现这个小部件,除非任何人都可以提供有关如何将对话框应用到对话框的信息 – matt 2010-03-30 20:02:59

回答可能太迟了,但很容易将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; 
} 

为什么你不应该customoption设计新的布局类似的DatePicker。你可以使用Spinners和Forloops。

您可以只设置:

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

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

其中dateDialog是

new DatePickerDialog() 

和参数类型为MAXDATE设置和为MinDate是long

+0

只适用于比Android 11更晚的版本。 – 2015-04-04 04:52:47

+0

for api 2015-10-05 07:57:20

U可以通过键入简单的线条实现这一

mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis()); 
     mcurrentDate.add(Calendar.MONTH,6); 
     mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());