2016-09-20 4 views
2

Есть ли способ отключить Datepicker прокрутки за прошлый месяц?Отключить прокрутку до предыдущего месяца в DatePicker

sample

я наткнулся на эту link и this. Но, похоже, он не отключит прокрутку/возврат к предыдущему месяцу.

Причина: установка задачи в настоящие/будущие дни.

+0

ли мой ответ вам помочь? Если да, подумайте о принятии его – Marat

ответ

1

Вы можете создать свой собственный класс DatePickerDialog. Затем пропустите необходимую дату в милли-токах при вызове datePicker. setMinDate() метод отключит предыдущие дни, а салфетки также будут отключены.

DatePickerDialog класс:

public class myDatePickerDialogFragment extends DialogFragment { 

    int mDay, mMonth, mYear; 
    long current; 

    // you also need to pass OnDateSetListener that is implemented in 
    // activity which is calling this datePicker 
    OnDateSetListener onSetDate; 

    public myDatePickerDialogFragment(){ 
    } 

    @Override 
    public void setArguments(Bundle args) { 
     super.setArguments(args); 
     mDay = args.getInt("day"); 
     mMonth = args.getInt("month"); 
     mYear = args.getInt("year"); 
     current = args.getLong("minDate"); 
    } 

    public void setOnDateSetListener(OnDateSetListener setDate){ 
     onSetDate = setDate; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), onSetDate, mYear, mMonth, mDay); 

     // here you set minimum day. User cannot chose earlier dates. 
     datePickerDialog.getDatePicker().setMinDate(current); 

     return datePickerDialog; 
    } 
} 

Внутри деятельности:

Bundle args = new Bundle(); 
args.putInt("day", mDay); 
args.putInt("month", mMonth); 
args.putInt("year", mYear); 
args.putLong("minDate", yourCalendarObject.getTimeInMillis()); 

myDatePickerDialogFragment dialog = new myDatePickerDialogFragment(); 
dialog.setArguments(args); 
dialog.setOnDateSetListener(datePickerListener); 
dialog.show(getSupportFragmentManager(), "date"); 

OnDateSetListener:

DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

     // do other work after date is set here 

    } 
}; 
+0

@RoCk вы попробовали мое решение? – Marat