【问题标题】:Android JAVA Google Material Date Picker Disable Future DatesAndroid JAVA Google Material Date Picker 禁用未来日期
【发布时间】:2022-01-10 06:41:55
【问题描述】:

我需要确保用户不会选择未来日期作为筛选记录的选择。我可以限制月份,但不能限制未来的日期。请帮忙。

这是我使用的代码:

// create the instance of the calendar to set the
    // bounds
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

    // now set the starting bound from current month to
    // previous MARCH
    /*calendar.set(Calendar.MONTH, Calendar.MARCH);
    long march = calendar.getTimeInMillis();*/

    // now set the ending bound from current month to
    // DECEMBER
    //calendar.set(Calendar.MONTH, Calendar.DECEMBER);
    //long december = calendar.getTimeInMillis();

    calendar.set(Calendar.DATE, Calendar.DAY_OF_MONTH);
    long currentDateTimeMills = calendar.getTimeInMillis();

    // create the instance of the CalendarConstraints
    // Builder
    CalendarConstraints.Builder calendarConstraintBuilder = new CalendarConstraints.Builder();

    // and set the start and end constraints (bounds)
    //calendarConstraintBuilder.setStart(march);
    //calendarConstraintBuilder.setEnd(december);
    
    calendarConstraintBuilder.setEnd(currentDateTimeMills);

    MaterialDatePicker.Builder<Pair<Long, Long>> materialDateBuilder = MaterialDatePicker.Builder.dateRangePicker();

    materialDateBuilder.setTitleText("SELECT A DATE");

    materialDateBuilder.setCalendarConstraints(calendarConstraintBuilder.build());

    //final MaterialDatePicker<Pair<Long, Long>> materialDatePicker = materialDateBuilder.build();
    final MaterialDatePicker materialDatePicker = materialDateBuilder.build();
    dateRangePickerButton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(fragmentManager.findFragmentByTag("MATERIAL_DATE_PICKER") == null) {
                        materialDatePicker.show(((FragmentActivity) v.getContext()).getSupportFragmentManager(), "MATERIAL_DATE_PICKER");
                    }
                }
            });

【问题讨论】:

    标签: java android android-calendar materialdatepicker


    【解决方案1】:
    DatePickerDialog dialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    dialog.getDatePicker().setMaxDate(new Date().getTime());
    return dialog;
    

    【讨论】:

    • Asghar.. 我被告知只能使用 Google Material Date Picker 进行设计。所以默认的 datepicker 方式不适合这个问题..
    【解决方案2】:

    添加这一行

        dialog.datePicker.maxDate = Date().time
    

    【讨论】:

    • Muhammad.. 我只需要 Google Material Date Picker 的解决方案.. 我不会使用默认的 datepicker 对话框..
    【解决方案3】:

    感谢 - https://www.geeksforgeeks.org/more-functionalities-of-material-design-date-picker-in-android/?ref=lbp

    我能够使用以下代码禁用未来的结果:

    CalendarConstraints.Builder calendarConstraintBuilder = new CalendarConstraints.Builder();
    
        calendarConstraintBuilder.setValidator(DateValidatorPointBackward.now());
    
        MaterialDatePicker.Builder<Pair<Long, Long>> materialDateBuilder = MaterialDatePicker.Builder.dateRangePicker();
    
        materialDateBuilder.setTitleText("SELECT DATE RANGE");
    
        materialDateBuilder.setCalendarConstraints(calendarConstraintBuilder.build());
    
        //final MaterialDatePicker<Pair<Long, Long>> materialDatePicker = materialDateBuilder.build();
        final MaterialDatePicker materialDatePicker = materialDateBuilder.build();
        dateRangePickerButton.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(fragmentManager.findFragmentByTag("MATERIAL_DATE_PICKER") == null) {
                            materialDatePicker.show(((FragmentActivity) v.getContext()).getSupportFragmentManager(), "MATERIAL_DATE_PICKER");
                        }
                    }
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2021-08-27
      • 2019-07-06
      • 2015-12-30
      • 1970-01-01
      • 2018-04-27
      相关资源
      最近更新 更多