Tôi tìm thấy DatePicker (Dialog) rất khó hiểu ... Khi setMinDate() được đặt ... lịch hiển thị thực sự "vô hiệu hóa" ngày đã qua (biến chúng thành màu xám) nhưng những ngày này vẫn có thể chọn được! Tôi muốn người dùng ngăn chặn để làm như vậy. Cách lý tưởng sẽ được thực hiện qua ngày không thể nhấp/không thể chọn. Nếu nó không thể, ít nhất là bắt sự kiện này (cái nào? OnDateChanged ?, onSelected? ...) và nướng một tin nhắn và tắt nút OK cho đến khi người dùng chọn một ngày hợp lệ.Làm thế nào để ngăn ngày được chọn trong DatePickerDialog (setMinDate không hoạt động như mong đợi)
Unfortunatelly, datepicker (hộp thoại) không có onChangedListener (thực sự nó có nhưng không có setter cho nó). Vì vậy, sự kiện duy nhất tôi nhận được là nhấn nút OK. Quá muộn rồi.
Đây là mã của tôi
dateTextView = (TextView) view.findViewById(R.id.createOrder_date);
dateTextView.setText(R.string.createOrder_time_now);
dateTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar calendarNow = Calendar.getInstance();
final int yearNow = calendarNow.get(Calendar.YEAR);
final int monthNow = calendarNow.get(Calendar.MONTH);
final int dayNow = calendarNow.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(CreateOrderFragment.this.getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
if (calendar.before(calendarNow)) {
Toast.makeText(CreateOrderFragment.this.getActivity(), getResources().getString(R.string.createOrder_datePicker_selectFutureDate), Toast.LENGTH_SHORT).show();
view.updateDate(yearNow, monthNow, dayNow);
calendar = calendarNow;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dateTextView.setText(sdf.format(calendar.getTime()));
}
}, yearNow, monthNow, dayNow);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
datePickerDialog.setTitle(getResources().getString(R.string.createOrder_datePicker_title));
datePickerDialog.show();
}
});
'SimpleDateFormat sdf = SimpleDateFormat mới ("dd/MM/yyyy"); ' \t \t' ngày minDate = null;' \t \t 'try {' \t \t \t 'minDate = sdf.parse ("01/01/2014"); ' \t \t '} catch (ParseException e) {' \t \t \t 'e.printStackTrace();' \t \t \t' trở lại; ' \t '\t}' 01. ::: Tôi đã làm điều đó bằng cách sử dụng tính năng này. ** LƯU Ý: ** Dành cho API cấp 9 trở lên –
Bạn đã bao giờ tìm thấy giải pháp cho điều này chưa? – jlindenbaum
unfortunatelly không. – Wooff