代码:我想在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("");
}
}
});
答案 0 :(得分:0)
在DatePicker的文档中,您可以找到2种方法可以控制此情况:
然后在显示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();
}