2014-09-17 3 views
16

DatePicker 대화 상자에서 과거 날짜를 숨기는 방법? 사용자가 과거 날짜를 선택할 수 없도록하고 싶습니다.숨기기 방법 과거 날짜를 제한하고 사용자가 미래의 날짜 만 선택하도록 제한

가장 좋은 방법은 무엇입니까? 내가 미래의 날짜 만 선택하도록 사용자를 제한하고 싶다면!

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     ................................................. 
     editDate.setOnClickListener(new View.OnClickListener() { 

      @SuppressWarnings("deprecation") 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       showDialog(DIALOG_DATE); 
      } 
     }); 

    } 

    @Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
      case DIALOG_DATE: 
       return new DatePickerDialog(this, new OnDateSetListener() { 

        @Override 
        public void onDateSet(DatePicker view, int year, 
          int monthOfYear, int dayOfMonth) { 
         dateTime.set(year, monthOfYear, dayOfMonth); 
         editDate.setText(dateFormatter 
           .format(dateTime.getTime())); 
        } 
       }, dateTime.get(Calendar.YEAR), 
        dateTime.get(Calendar.MONTH), 
        dateTime.get(Calendar.DAY_OF_MONTH)); 
      } 
      return null; 
    } 

} 
+0

왜 현상금인가? setMinDate 메소드가 마음에 들지 않았습니까? –

+0

[seMinDate] (http://stackoverflow.com/a/20813342/2591002) 메소드를 살펴보십시오. –

+0

'setMinDate()'이면 충분합니다. 당신은'setMinDate (new Date())'를 사용할 수 있으며 최소 날짜는 오늘 일 것이다. –

답변

8

당신은 당신의 목표를 달성하기 위해 setMinDate (long minDate)를 사용할 수 있습니다. 박사는 말한다 :

Sets the minimal date supported by this NumberPicker in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone. 
13

당신은 최소 날짜 setMinDate를 사용해야하고 최대 날짜를 설정하려는 경우 당신은 또한 setMaxDate를 사용할 수 있습니다.

DatePickerDialog에 대한 SetMinDate의 샘플 코드는 다음과 같습니다.

@Override 
protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DIALOG_DATE: 

      DatePickerDialog mDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() { 

       @Override 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
        dateTime.set(year, monthOfYear, dayOfMonth); 
        editDate.setText(dateFormatter.format(dateTime.getTime())); 
       } 
      }, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH)); 
      Calendar mCalendarMinimum = Calendar.getInstance(); 
      mCalendarMinimum.add(Calendar.HOUR, -1); 
      mDatePickerDialog.getDatePicker().setMinDate(mCalendarMinimum.getTimeInMillis()); 
      return mDatePickerDialog; 
     } 
     return null; 
    } 
2

U는 myDateListener 코드

개인 DatePickerDialog.OnDateSetListener myDateListener = 새로운 DatePickerDialog.OnDateSetListener() {

@Override 
    public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { 

     showDate(arg1, arg2 + 1, arg3); 
    } 
}; 
다음되는 경우 스위치 케이스

DatePickerDialog dpd = new DatePickerDialog(AddTaskActivity.this, 
        myDateListener, year, month, day); 
      dpd.getDatePicker().setCalendarViewShown(false); 
      dpd.show(); 

를이 코드를 시도 할 수 있습니다

및 showDate()는 텍스트 뷰 다음 날짜는

public void showDate(int year, int month, int day) { 

    String day1 = String.valueOf(day); 
    String month1 = String.valueOf(month); 



    String s2 = day1 + "/" + month1 + "/" + year; 

    Log.e("date", s2); 
    Cal.setText(s2); 
} 

가 당신 :

0
this.calendar = new GregorianCalendar(); 
this.datePicker = (DatePicker) findViewById(R.id.xxxxx); 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    // (picker is a DatePicker) 
    this.datePicker.setMinDate(this.calendar.getTimeInMillis()); 
} else { 
    final int minYear = this.calendar.get(Calendar.YEAR); 
    final int minMonth = this.calendar.get(Calendar.MONTH); 
    final int minDay = this.calendar.get(Calendar.DAY_OF_MONTH); 

    this.datePicker.init(minYear, minMonth, minDay, 
      new OnDateChangedListener() { 

       public void onDateChanged(DatePicker view, int year, 
         int month, int day) { 
        Calendar newDate = Calendar.getInstance(); 
        newDate.set(year, month, day); 

        if (calendar.after(newDate)) { 
         view.init(minYear, minMonth, minDay, this); 
        } 
       } 
      }); 
    Log.w(TAG, "API Level < 11 so not restricting date range..."); 
} 

은 당신이 :)

1

당신은 하나를 해결할 수 있습니다 도움이 될 것입니다 희망이 도움이되기를 바랍니다 showdate와() 코드입니다 코드 줄 :

datePicker.setMinDate(Calendar.getInstance().getTimeInMillis()); 

이렇게하면 날짜 선택 도구는 현재 티의 날짜 만 표시합니다. 나 그리고 앞으로.

Reference.