2013-09-16 1 views

ответ

0

Посмотрите этот пример. В этом мире кода я контролирую дату max и min. Возможно, вы можете изменить этот код, чтобы контролировать максимальное и минимальное время (а не дату). Я думаю, что у вас не будет слишком много проблем с изменением этого кода.

Для версии Android выше на Honeycom мы можем использовать метод setMinDate(). Для более старых версий мы контролируем max и min, когда пользователь пытается изменить дату.

// Calendar 
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..."); 
} 
+0

спасибо, но мне кажется, что этот метод работает не очень хорошо, в конце концов я пишу новый wigdet осуществить это .. – KarelCF

+0

цитирование * «в конце концов я пишу новый wigdet для реализации этого» * ​​комментарий о @KarelCF. если у вас есть рабочий код сейчас, можете ли вы опубликовать его? так что другие могут найти это полезным –