代码之家  ›  专栏  ›  技术社区  ›  DevWithZachary

将一个DatePickerDialog设置为比其他DatePickerDialog至少高一天

  •  0
  • DevWithZachary  · 技术社区  · 8 年前

    我有两个编辑文本框,一个用于签入,另一个用于检出日期。

    my current code:
    
    private void setDateTimeField() {
            checkInEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if (hasFocus){
                        fromDatePickerDialog.show();
    
                    }
                }
            });
    
            checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if (hasFocus) {
                        toDatePickerDialog.show();
                    }
                }
            });
    
            Calendar newCalendar = Calendar.getInstance();
            fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
    
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    Calendar newDate = Calendar.getInstance();
                    newDate.set(year, monthOfYear, dayOfMonth);
                    checkInEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year);
    
                    newDate.add(Calendar.DATE, 1);
    
                    toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND));
                }
    
            },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
    
    
            toDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
    
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    Calendar newDate = Calendar.getInstance();
                    newDate.set(year, monthOfYear, dayOfMonth);
                    checkOutEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year);
                }
    
            },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
    
    
            fromDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND));
            toDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND));
        }
    

    我已添加线条

    toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND));
    

    在中 fromDatePickerDialog

    1 回复  |  直到 8 年前
        1
  •  0
  •   Vickyexpert    8 年前

    我还没有测试过,但如果它有效,请尝试下面的代码,

    首先取一个全局变量作为起始日期,calander数据类型如下:

           Calendar fromDate;
    

         // In your fromDatePickerDialog at onDateSet method 
         fromDate = newDate;
    

    现在将焦点列表的以下代码更改为时间编辑文本

         checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
    
                    if(fromDate != null)
                          toDatePickerDialog.setMinDate(fromDate.getTime());
    
                    toDatePickerDialog.show();
                }
            }
        });