2016-11-25 98 views
8

我想在Android的日期選取器禁用的具體月份星期日及具體日期禁用星期日及任何其他特定日期

我使用的日期選擇的是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工作完美,但我只想禁用星期日和特定的日子。

+0

看看這是否有幫助。 https://stackoverflow.com/questions/34727244/how-to-disable-certain-dates-in-the-android-date-picker-dialog/34730506#34730506。它使用自定義日期選擇器 - https://github.com/wdullaer/MaterialDateTimePicker – vsoni

回答

2

這對於默認的DatePickerDialog是不可能的。你可能想看看MaterialDateTimePicker

com.wdullaer.materialdatetimepicker.date.DatePickerDialog你有方法public void setSelectableDays(Calendar[] selectableDays)

2

您正在使用calendar.get(Calendar.DAY_OF_MONTH)匹配星期日 使用DAY_OF_WEEK其取值週日,週一,週二,週三,週四,週五,週六

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

這解決了OPs示例代碼中的一個if語句,但它實際上並未在datepicker中禁用星期日/阻止用戶選擇星期日。 – BooleanCheese