How to disable certain dates in the Android Date P

2019-01-12 09:36发布

I am using default Android DatePickerDialog which contains android.widget.DatePicker.

Does anybody know how to disable or make certain dates unselectable?

I know DatePicker allows to setMinDate() and setMaxDate() but it doesn't allow to disable specific dates in the middle.

e.g. on this picture would like to disable date 18, 26, etc:

enter image description here

2条回答
叼着烟拽天下
2楼-- · 2019-01-12 09:47

I got a method by using custom datepicker. First we need to take the date as a string and then convert it into date object and then the date is converted to calendar object. At last by using setDisabledDays(calenderobj). We can disable it. The code is as follows.

 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
                String a = "26-07-2017";
                java.util.Date date = null;
                try {
                    date = sdf.parse(a);
                    MainActivity obj = new MainActivity();
                    calendar = obj.dateToCalendar(date);
                    System.out.println(calendar.getTime());
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                List<Calendar> dates = new ArrayList<>();
                dates.add(calendar);
                Calendar[] disabledDays1 = dates.toArray(new Calendar[dates.size()]);
                dpd.setDisabledDays(disabledDays1);
                }


    private Calendar dateToCalendar(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }
查看更多
祖国的老花朵
3楼-- · 2019-01-12 10:04

That is not a built in behavior - you would have to use a custom date picker.

查看更多
登录 后发表回答