2010-03-26 13 views
11

Sto usando datePicker in Android per visualizzare le immagini in base alle date selezionate dall'utente. Ho bisogno di limitare le date specificate in determinati giorni, ad esempio dal 1 ° gennaio 2010 al 31 dicembre 2010. Semplice come quello che ho pensato, ma non dove posso trovare la risposta su come limitare queste date.Imposta i limiti di data di DatePicker Android

Qualcuno sa come limitare le date per android DatePicker

+1

sono riuscito a impostare programatically min, max date selezionabili, e anche impostare la data corrente (default) per la DatePicker Vista: http://stackoverflow.com/ questions/6421874/how-to-get-the-date-set-in-the-datepicker-widget-in-android/7961268 # 7961268 –

risposta

0

immagino che devi implementare il proprio DatePicker. La logica alla base di questo sarebbe: "Solo pochi sviluppatori avrebbero mai limitato il DatePicker in modo che dovessero implementare le stesse funzionalità".

+1

Anche per XML ci sono alcune proprietà aggiuntive disponibili come endYear beginYear, è possibile utilizzare quello per limiti. – Pentium10

+0

dove troverei le informazioni a partire dall'inizio, i suoni del genere funzionerebbero molto bene. Avevo paura della risposta implementare il mio, si spera che queste proprietà xml verranno fuori. – matt

+0

i limiti endYear e beginYear funzionano solo con widget e non con la finestra di dialogo datePicker che sto utilizzando. Cercherò invece di vedere come implementare il widget, a meno che nessuno possa offrire informazioni su come applicare i limiti alla finestra di dialogo – matt

1

Potrebbe essere troppo tardi per rispondere, ma è facile impostare la data min e max per DatePickerDialog. Funziona per tutte le versioni Android. Semplicemente è necessario restituire il DatePickerDialog basato su Android versione

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

Perché non si dovrebbe progettare nuovo layout come DatePicker con customoption. Puoi fare con Spinners e Forloops.

7

Si può solo impostare:

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

e

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

dove dateDialog è un

new DatePickerDialog() 

e il param tipo da impostare per MaxDate e MinDate è un long

+0

Funziona solo con versioni successive a Android 11. –

+0

per API <11 provare questo http://stackoverflow.com/a/32943731/3758898 –

0

U può raggiungere questo digitando una semplice linea

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