【发布时间】:2015-09-12 00:42:21
【问题描述】:
我想限制日期,这样用户就不能选择更多的日期,例如,如果今天是 1 月 1 日,那么用户应该不能选择超过 7 个日期,我的意思是他不能选择 1 月 9 日.我也希望他不要选择月份和年份。所以我限制在一周内完成他的任务。
到目前为止,我所做的是显示日期选择器片段并在其中设置当前日期。我的主要活动中的代码是这样的:
etSelectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment datePickerFragment = new DatePickerFragment() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Log.d("Date Change", "onDateSet");
Calendar c = Calendar.getInstance();
c.set(year, month, day);
DateFormat df = DateFormat.getDateInstance();
etSelectDate.setText(df.format(c.getTime()));
//nextField.requestFocus(); //moves the focus to something else after dialog is closed
}
};
datePickerFragment.show(MainActivity.this.getSupportFragmentManager(), "datePicker");
}
});
日期选择器片段类是这样的:
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
//blah
}
}
到那时它工作正常,但我不知道如何限制日期,其余月份和年份应该是不可选择的。我看过很多链接,例如 this ,但我不明白我该怎么做,而且在 android 网站上也没有任何帮助。
所以请帮帮我,我怎样才能只设置 7 天的限制
更新
通过您的回复,我知道如何在日历中设置最大日期,所以我想在当前日期前 7 天设置最大日期,我仍然没有得到它。到目前为止我读到的方法是:
pickerDialog.getDatePicker().setMaxDate(new Date().getTime());
它将当前日期设置为最大值,但是由于它是 Date 对象,我怎样才能在其中添加 7 天?请帮忙
【问题讨论】:
-
你可以在这里浏览完整的线程:stackoverflow.com/questions/18272306/…
-
我正在使用日期选择器。它工作正常。但是在打开选择器时,我需要将默认年份显示为十年前。但是我用户滚动需要显示到当前年份。它是否有任何方法可以在小部件中显示默认日期,并且在向上或向下滚动时它需要像往常一样显示年份。
标签: android android-datepicker