2014-09-17 10 views
16

DatePicker iletişim kutusundaki geçmiş tarihleri ​​nasıl gizleyebilirim? Kullanıcıların, tarihlerini seçmesine izin vermek istemiyorumGeçmiş Tarihleri ​​Gizle ve kullanıcıyı sadece ileriki tarihler seçmek üzere kısıtla

En iyi yol ne olurdu? Kullanıcının yalnızca gelecekteki tarihleri ​​seçmesini kısıtlamak istiyorum!

@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

Neden ödül? SetMinDate yöntemini beğenmediniz mi? –

+0

, [seMinDate] (http://stackoverflow.com/a/20813342/2591002) yöntemine bir göz atın. –

+0

'setMinDate()' yeterli olmalıdır. SetMinDate (yeni Date()) 'i kullanabilirsiniz ve minimum tarih bugün olacaktır –

cevap

8

Hedefinize ulaşmak için setMinDate (long minDate) kullanabilirsiniz. Doktor diyor ki:

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

Asgari tarih için setMinDate kullanmak zorunda ve maksimum tarihi ayarlamak istiyorsanız da setMaxDate kullanabilirsiniz.

DatePickerDialog için SetMinDate için örnek kod.

@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 kodu

özel DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {

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

     showDate(arg1, arg2 + 1, arg3); 
    } 
}; 
takip ediyor nerede anahtarı durumunda

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

Bu kodu deneyebilirsiniz

ve showDate(), görüntüleme yöntemidir. TextView'un İşte tarih

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); 
} 

size :)

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..."); 
} 

size :)

1

Sen biriyle çözebilir yardımcı olacaktır Umut yardımcı olacaktır Umut showDate() kodudur satır satırı:

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

Bu şekilde, Tarih Seçici yalnızca geçerli ti tarihlerini gösterecektir ben ve ileri.

Reference.

İlgili konular