2016-11-25 18 views
8

Tôi muốn vô hiệu hóa chủ nhật và ngày cụ thể trong những tháng đặc biệt trong chọn ngày androidDisable Chủ nhật và bất kỳ ngày cụ thể khác

datepicker Tôi đã từng là android datepicker:

Calendar calendar = Calendar.getInstance(); 
calendar.add(Calendar.MONTH, 1); 
calendar.setMinimalDaysInFirstWeek(27); 
// calendar.add(Calendar.DAY_OF_MONTH, 1); 
//calendar.set(2016,11,23); 
// new DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show(); 
DatePickerDialog dpDialog = new DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 
// dpDialog.updateDate(2016,11,23); 

DatePicker datePicker = dpDialog.getDatePicker(); 
//datePicker.updateDate(2016,11,23); 
// Date newDate = calendar.getTime(); 
//dpDialog.getDatePicker().setMinDate(newDate.getTime()); 
//datePicker.init(); 

if (calendar.get(Calendar.DAY_OF_MONTH)==Calendar.SUNDAY) { 
    // dpDialog.setTitle("Sorry Sundays wont be accepted"); 
    // dpDialog.setMessage("not selected"); 
    // dpDialog.show(); 
    //datePicker.setBackgroundColor(000000); 
    Color.parseColor("#000000"); 
} 
else { 
    long now = System.currentTimeMillis(); 

    datePicker.setFirstDayOfWeek(Calendar.MONDAY); 
    datePicker.setMinDate(now + (1000 * 60 * 60 * 24 * 1)); 
    datePicker.setMaxDate(calendar.getTimeInMillis()); 
    dpDialog.show(); 
} 

public DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.add(Calendar.MONTH, 1); 

     //calendar.set(2016,11,23); 
     display.setText("Selected Date:" + (dayOfMonth) + "/" + (monthOfYear + 1) + "/" + year); 
      Button ok = (Button) findViewById(R.id.confirm); 
      ok.setOnClickListener((v) -> { 
       Intent intent = new Intent(LoginSuccess.this, Confirm.class); 
       intent.putExtra("Date", dayOfMonth + "/" + (monthOfYear + 1) + "/" + year); 
       intent.putExtra("name", (String) spinnerOsversions.getSelectedItem()); 
       intent.putExtra("email4", email3.toString()); 
       intent.putExtra("bikeno4", bikeno3.toString()); 
       intent.putExtra("fname", fname.toString()); 
       //intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      }); 
    } 

SetMinDatesetMaxdate đang làm việc hoàn hảo nhưng Tôi chỉ muốn vô hiệu hóa chủ nhật và những ngày cụ thể.

+0

Xem điều này có hữu ích không. https://stackoverflow.com/questions/34727244/how-to-disable-certain-dates-in-the-android-date-picker-dialog/34730506#34730506. Nó sử dụng bộ chọn ngày tùy chỉnh từ - https://github.com/wdullaer/MaterialDateTimePicker – vsoni

Trả lời

2

Điều này là không thể với DatePickerDialog mặc định. Bạn có thể muốn xem MaterialDateTimePicker.

Trong com.wdullaer.materialdatetimepicker.date.DatePickerDialog bạn có phương thức public void setSelectableDays(Calendar[] selectableDays).

2

Bạn đang sử dụng calendar.get(Calendar.DAY_OF_MONTH) cho phù hợp với chủ nhật sử dụng DAY_OF_WEEK mà có giá trị chủ nhật, thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu và thứ bảy

if (calendar.get(Calendar.DAY_OF_WEEK).equals(Calendar.SUNDAY)) { 
    // dpDialog.setTitle("Sorry Sundays wont be accepted"); 
    // dpDialog.setMessage("not selected"); 
    // dpDialog.show(); 
    //datePicker.setBackgroundColor(000000); 
    Color.parseColor("#000000"); 
} 
+0

Điều này sửa lỗi một câu lệnh if trong mã ví dụ OPs, nhưng nó không thực sự vô hiệu hóa Chủ nhật trong ngày/ngăn người dùng chọn ngày chủ nhật. – BooleanCheese

Các vấn đề liên quan