android - rango - Cómo ocultar fechas pasadas y restringir al usuario para seleccionar solo fechas futuras
datepicker bloquear fechas anteriores jquery (5)
¿Cómo ocultar fechas pasadas en el diálogo de DatePicker? No quiero permitir que el usuario seleccione fechas pasadas
Cúal seria la mejor manera ? Si quiero restringir al usuario para seleccionar fechas futuras solamente!
@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;
}
}
Puedes probar este código en tu caja de conmutación.
DatePickerDialog dpd = new DatePickerDialog(AddTaskActivity.this,
myDateListener, year, month, day);
dpd.getDatePicker().setCalendarViewShown(false);
dpd.show();
Donde myDateListener está siguiendo el código
privado DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener () {
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
showDate(arg1, arg2 + 1, arg3);
}
};
y showDate () es el método para mostrar la fecha en textView Aquí está el código para 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);
}
Espero que te ayude :)
Puedes resolverlo con una línea de código:
datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());
De esta manera, el Selector de fecha mostrará solo las fechas a partir de la hora actual y adelante.
Puedes usar setMinDate (long minDate) para lograr tu objetivo. Doc dice:
Sets the minimal date supported by this NumberPicker in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone.
setMinDate usar setMinDate para la fecha mínima y también puede usar setMaxDate si desea establecer la fecha máxima.
Aquí está el código de ejemplo para SetMinDate
para DatePickerDialog
.
@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;
}
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...");
}
Espero que te ayude :)