2013-11-18 2 views
2

Iam, использующий диалог выбора времени в моем проекте. он не должен выбрать прошлые значения по отношению к текущему времени .. (я имею в виду, чтобы установить минимальное и максимальное время для выбора)Не позволять выборщику времени выбирать значения прошедшего времени

Ниже процесс timepicker я сделал

// Current Hour 
      hour = cal.get(Calendar.HOUR_OF_DAY); 
      // Current Minute 
      minute = cal.get(Calendar.MINUTE); 

return new TimePickerDialog(this, timePickerListener, hour, minute, 
           false); 

я сделал ниже процесс на сегодняшний день picker dialog.it работал. Но для выбора времени я не могу найти какой-либо процесс. Для выбора даты:

Calendar calendar = Calendar.getInstance(); 
       dialog = new DatePickerDialog(this, onDateSet, cYear, cMonth, cDay); 
       dialog.getDatePicker().setMinDate(
           calendar.getTimeInMillis()); 

Так, пожалуйста, помогите, как добиться этого в диалоговом окне выбора времени

ответ

2

Вы можете использовать это в качестве отправной точки.

Вы увеличиваете TimePickerDialog и добавили 2 метода setMin и setMax.

В методе onTimeChanged проверьте, что новое время действует в отношении мин/макс.

Он по-прежнему нуждается в полировке, хотя ...

public class BoundTimePickerDialog extends TimePickerDialog { 

    private int minHour = -1, minMinute = -1, maxHour = 100, maxMinute = 100; 

    private int currentHour, currentMinute; 

    public BoundTimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) { 
     super(context, callBack, hourOfDay, minute, is24HourView); 
    } 

    public void setMin(int hour, int minute) { 
     minHour = hour; 
     minMinute = minute; 
    } 

    public void setMax(int hour, int minute) { 
     maxHour = hour; 
     maxMinute = minute; 
    } 

    @Override 
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
     super.onTimeChanged(view, hourOfDay, minute); 

     boolean validTime; 
     if(hourOfDay < minHour) { 
      validTime = false; 
     } 
     else if(hourOfDay == minHour) { 
      validTime = minute >= minMinute; 
     } 
     else if(hourOfDay == maxHour) { 
      validTime = minute <= maxMinute; 
     } 
     else { 
      validTime = true; 
     } 

     if(validTime) { 
      currentHour = hourOfDay; 
      currentMinute = minute; 
     } 
     else { 
      updateTime(currentHour, currentMinute); 
     } 
    } 
} 
+0

Этот код не работает на леденец, только работая на предварительном устройстве леденец. –

+0

Пожалуйста, дайте лучшее решение –