如何在Android Studio的MaterialDatePicker对话框中设置年份限制

3

我在使用Material Design日期选择器对话框时遇到了设置最大和最小年份的问题,还需要加入一张仅显示一个年份的Material日期选择器对话框的图片。

以下是代码

    long today = MaterialDatePicker.todayInUtcMilliseconds();
            Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

              calendar.set(Calendar.MONTH, Calendar.JANUARY);
              long jan = calendar.getTimeInMillis();
                calendar.setTimeInMillis(today);


             int lastMonth = calendar.get(Calendar.MONTH);
                calendar.set(Calendar.MONTH, lastMonth);
                long dec = calendar.getTimeInMillis();


        CalendarConstraints.Builder calendarConstraintBuilder = new CalendarConstraints.Builder();
        calendarConstraintBuilder.setValidator(DateValidatorPointBackward.now());
        calendarConstraintBuilder.setStart(jan);
        calendarConstraintBuilder.setEnd(dec);

        MaterialDatePicker.Builder<Long> materialBuilder = MaterialDatePicker.Builder.datePicker();
        materialBuilder.setTitleText("Select Date Of Birth");
        materialBuilder.setSelection(today);


        materialBuilder.setCalendarConstraints(calendarConstraintBuilder.build());



        final MaterialDatePicker<Long> materialDatePicker = materialBuilder.build();
        inputEditTextDateOfBirth.setShowSoftInputOnFocus(false);

enter image description here


1
你的预期结果是什么?因为看起来你得到了你编写的代码的确切结果。 - 5f3bde39-70a2-4df1-afa2-47f61b
我想展示从最近的年份到2000年的年份。 - Farzan Siddiqui
1个回答

3
注意,此问题与点击月份年份小部件后的年份选择相关。
为了进行年份范围选择,您缺少一行代码:
    // set minimum year variable
    int minYear = 2010;

    // here you set the month using the "current" calendar instance
    calendar.set(Calendar.MONTH, Calendar.JANUARY);

    // but you need to also set the year of "min"
    calendar.set(Calendar.YEAR, minYear);

    // and then get a snapshot of that time.
    long jan = calendar.getTimeInMillis();

我不确定这是否完全满足您的要求,但至少它呈现了一系列年份。文本显示是使用addOnPositiveButtonClickListener在我的测试驱动程序中的一部分:

enter image description here

因为我很好奇,这也可以防止“月份选择器箭头”向前推进早于“min”:

enter image description here


谢谢!它在工作。我想要像你上面提到的解决方案。 - Farzan Siddiqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接