【问题标题】:How to disable certain dates in the Android Date Picker dialog?如何在 Android 日期选择器对话框中禁用某些日期?
【发布时间】:2016-04-16 02:22:32
【问题描述】:

我正在使用默认的 Android DatePickerDialog,其中包含 android.widget.DatePicker

有人知道如何禁用或使某些日期无法选择吗?

我知道DatePicker 允许setMinDate()setMaxDate(),但它不允许禁用中间的特定日期。

例如在这张照片上想禁用日期 18、26 等:

【问题讨论】:

    标签: android android-datepicker datepickerdialog


    【解决方案1】:

    这不是内置行为 - 您必须使用自定义日期选择器。

    【讨论】:

    【解决方案2】:

    我得到了一个使用自定义日期选择器的方法。首先,我们需要将日期作为字符串,然后将其转换为日期对象,然后将日期转换为日历对象。最后通过使用 setDisabledDays(calenderobj)。我们可以禁用它。 代码如下。

     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;
        }
    

    【讨论】:

    • 我可以知道这个 dpd 对象是什么吗?
    • dpd.setDisabledDays(disabledDays1);在这一行中,您将 disabledates 设置为 datepicker。 dpd 是自定义日期选择器的对象
    • 日期选择器没有setDisabledDatys()这样的功能
    • 此代码适用于library,而不适用于默认日期选择器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多