如何在Datepicker布局中显示有限的年份?

时间:2018-08-13 12:29:33

标签: android datepicker

代码:我想在Datepicker布局中显示1990-1994年的范围。我可以手动设置范围,但我不希望用户看到额外的年份字段。我正在为日期选择器使用微调模式。

ActivityCalenderLayoutBinding calenderLayoutBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_calender_layout, null, false);
        final AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setView(calenderLayoutBinding.getRoot());
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

               // calenderLayoutBinding.datePicker.setMaxDate(System.currentTimeMillis()-630720000000L);


                int maxYear = 1990;
                int minYear = 1998;
                int day = calenderLayoutBinding.datePicker.getDayOfMonth();
                int month = calenderLayoutBinding.datePicker.getMonth()+1;
                int year = calenderLayoutBinding.datePicker.getYear();

                if(year>=maxYear && year <=minYear) {
                    int age = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) - year;
                    hivselfRiskAssessmentBinding.ageNo.setText(new StringBuilder().append(age).append(" Years"));
                    }
                else {
                    Toast.makeText(getApplicationContext(),"Sorry you are not aligable ",Toast.LENGTH_LONG).show();
                    hivselfRiskAssessmentBinding.ageNo.setText("");

                }


            }
        });

2 个答案:

答案 0 :(得分:0)

DatePicker的文档中,您可以找到2种方法可以控制此情况:

  1. setMaxDate
  2. setMinDate

然后在显示DatePicker之前先进行必要的设置:

calenderLayoutBinding.datePicker.setMaxDate(123456789L);

参数是从1970年1月1日开始的当地时区。

答案 1 :(得分:0)

尝试一下  而我正在使用相同的日期进行最小和最大更改,

DatePicker datePicker = (DatePicker) dialog.findViewById(R.id.dialogDatePicker);

 try {
        String dateString = "30/09/1994";
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        Date date = sdf.parse(dateString);

        long minimumDate = date.getTime(); 
        calenderLayoutBinding.datePicker.setMaxDate(minimumDate);
        calenderLayoutBinding.datePicker.setMinDate(minimumDate);

    } catch (ParseException e) {
        e.printStackTrace();
    }