android-datepicker layout - Come impostare la data massima nella finestra di dialogo datepicker in Android?





value small (10)


Usa setMaxDate() .

Ad esempio, sostituire return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay) con qualcosa del genere:

    DatePickerDialog dialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    dialog.getDatePicker().setMaxDate(new Date().getTime());
    return dialog;

Nella mia applicazione sto usando la selezione della data per impostare la data. Voglio impostare la data massima del selettore della data è come data odierna in base alla data del sistema. Non so come impostare la data massima di selezione data come data di oggi. Qualcuno sa aiutarmi risolvere questo problema.

Il mio codice di selezione data è:

private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;

final Calendar c = Calendar.getInstance();
pYear = c.get(Calendar.YEAR);
pMonth = c.get(Calendar.MONTH);
pDay = c.get(Calendar.DAY_OF_MONTH);

// Date picker
public Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:

        DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {

                pYear = year;
                pMonth = monthOfYear;
                pDay = dayOfMonth;

                e_dob.setText(new StringBuilder()
                        // to set date in editext
                        .append(pDay).append("/").append(pMonth + 1)
                        .append("/").append(pYear).append(" "));
            }
        };
        return new DatePickerDialog(this, pDateSetListener, pYear, pMonth,
                pDay);

    }
    return null;
}



Calendar c = Calendar.getInstance();
c.set(2017, 0, 1);//Year,Mounth -1,Day
your_date_picker.setMaxDate(c.getTimeInMillis());

ANCHE POSSIAMO FARE QUESTO

long now = System.currentTimeMillis() - 1000;
dp_time.setMinDate(now);
dp_time.setMaxDate(now+(1000*60*60*24*7)); //After 7 Days from Now



Prova questo

Ho provato troppe soluzioni ma nessuno di loro funzionava, Dopo aver perso la mia mezza giornata finalmente ho fatto una soluzione.

Questo codice ti mostra semplicemente un DatePickerDialog con la data minima e massima, il mese e l'anno, qualsiasi cosa tu voglia modificare.

final Calendar calendar = Calendar.getInstance();
                DatePickerDialog dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
                        calendar.set(Calendar.YEAR, year);
                        calendar.set(Calendar.MONTH, (month+1));
                        calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
                        String myFormat = "dd/MM/yyyy";
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                        your_edittext.setText(sdf.format(calendar.getTime()));
                    }
                },calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
                dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());// TODO: used to hide previous date,month and year
                calendar.add(Calendar.YEAR, 0);
                dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());// TODO: used to hide future date,month and year
                dialog.show();

Output: - Disabilita il calendario precedente e futuro




usa questo codice direttamente nel metodo principale spero che ti possa aiutare ...

@RequiresApi(api = Build.VERSION_CODES.N)       
public DatePickerDialog datePickerDialog_db()
{

    DatePickerDialog pickerDialog = new DatePickerDialog(getApplicationContext(),your view, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
    myCalendar.get(Calendar.DAY_OF_MONTH));

    pickerDialog.getDatePicker().setMaxDate(Calendar.getInstance().getTimeInMillis());

    pickerDialog.show();

    return null;       
}



Ho risolto questo seguendo

final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
    datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());    

spero che ti possa aiutare




Controlla il mio custom datepickerdialog

https://github.com/Redman1037/EightFoldsDatePickerDialog

import android.app.DatePickerDialog;
import android.content.Context;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;


/**
 * Created by Manohar on 14/08/2017.
 */

public class EightFoldsDatePickerDialog extends DatePickerDialog {


    private DatePickerDialog datePickerDialog;
    private SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

    @RequiresApi(api = Build.VERSION_CODES.N)
    public EightFoldsDatePickerDialog(@NonNull Context context) {
        super(context);
        datePickerDialog = new DatePickerDialog(context);

    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    public EightFoldsDatePickerDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
        datePickerDialog = new DatePickerDialog(context, themeResId);
    }

    public EightFoldsDatePickerDialog(@NonNull Context context, @Nullable OnDateSetListener listener, int year, int month, int dayOfMonth) {
        super(context, listener, year, month, dayOfMonth);
        datePickerDialog = new DatePickerDialog(context, listener, year, month, dayOfMonth);

    }

    public EightFoldsDatePickerDialog(@NonNull Context context, int themeResId, @Nullable OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
        super(context, themeResId, listener, year, monthOfYear, dayOfMonth);
        datePickerDialog = new DatePickerDialog(context, themeResId, listener, year, monthOfYear, dayOfMonth);
    }

    public void show() {
        datePickerDialog.show();
    }


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

        String minDate = "" + day + "-" + getmonth(month) + "-" + year;

        try {
            datePickerDialog.getDatePicker().setMinDate(dateFormat.parse(minDate).getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

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

        String maxDate = "" + day + "-" + getmonth(month) + "-" + year;
        try {
            datePickerDialog.getDatePicker().setMaxDate(dateFormat.parse(maxDate).getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

    public void setTodayAsMaxDate() {

        datePickerDialog.getDatePicker().setMaxDate(Calendar.getInstance().getTime().getTime());

    }

    public void setTodayAsMinDate() {

        datePickerDialog.getDatePicker().setMinDate(Calendar.getInstance().getTime().getTime());

    }


    private String getmonth(int month) {

        switch (month) {
            case 1:
                return "January";

            case 2:
                return "February";

            case 3:
                return "March";

            case 4:
                return "April";

            case 5:
                return "May";

            case 6:
                return "June";

            case 7:
                return "July";

            case 8:
                return "August";

            case 9:
                return "September";

            case 10:
                return "October";

            case 11:
                return "November";

            case 12:
                return "December";


        }
        return "January";

    }

}

uso

Copia EightFoldsDatePickerDialog.java nel tuo progetto

EightFoldsDatePickerDialog datePickerDialog=new EightFoldsDatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
              //Do something with date
                Toast.makeText(this, "Year "+year+" month "+month+" day "+dayOfMonth, Toast.LENGTH_SHORT).show();
            }
        },year,month,day);   // give any  year , month , day values, this will be opened by default in dialog

        datePickerDialog.setMinDate(2017,8,7); //arguments are   year , month , date (use for setting custom min date)
        datePickerDialog.setMaxDate(2017,8,25);  //arguments are   year , month , date (use for setting custom max date)

       // datePickerDialog.setTodayAsMinDate();   // sets today's date as min date
       // datePickerDialog.setTodayAsMaxDate();    // sets today's date as max date

        datePickerDialog.show();

Risultato




private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;

/**inside oncreate */
final Calendar c = Calendar.getInstance();
         pYear= c.get(Calendar.YEAR);
         pMonth = c.get(Calendar.MONTH);
         pDay = c.get(Calendar.DAY_OF_MONTH);


 @Override
     protected Dialog onCreateDialog(int id) {
             switch (id) {
             case DATE_DIALOG_ID:
                     return new DatePickerDialog(this,
                             mDateSetListener,
                             pYear, pMonth-1, pDay);
            }

             return null;
     }
     protected void onPrepareDialog(int id, Dialog dialog) {
             switch (id) {
             case DATE_DIALOG_ID:
                     ((DatePickerDialog) dialog).updateDate(pYear, pMonth-1, pDay);
                     break;
             }
     }   
     private DatePickerDialog.OnDateSetListener mDateSetListener =
         new DatePickerDialog.OnDateSetListener() {
         public void onDateSet(DatePicker view, int year, int monthOfYear,
                         int dayOfMonth) {
                // write your code here to get the selected Date
         }
 };

prova questo dovrebbe funzionare. Grazie




DatePicker dp = (DatePicker) findViewById(R.id.datePicker1);

dp.setMaxDate(new Date().getTime());



Puoi provare a sostituire questa linea:

return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);

Da quelli:

DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
DatePicker datePicker = dpDialog.getDatePicker();

Calendar calendar = Calendar.getInstance();//get the current day
datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
return dpDialog;



Prova genymotion.com per Android Studio. Fiammeggiante veloce! Ha solo bisogno di una sola installazione. Niente più dolore AVD.





android android-datepicker