DatePickerを表示しているアプリを作成しています。DatePickerの最小日付を過去2年、最大日付を将来2年のみに設定します。選択は現在の日付に基づく必要があります。現在の日付が2016年11月23日であるとすると、datepickerが表示されます。 DatePickerの2014年11月23日までの日付は、2014年11月23日より前にすべての日付を無効にする必要があります。また、Datepickerカーソルをクリックすると、現在の日付になります。作成されたDtaePicker
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
}
今日の2年前の最小日付と2年後の最大日付を設定するには、次のコードを使用します。
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -2); // subtract 2 years from now
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.YEAR, 4); // add 4 years to min date to have 2 years after now
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
このコードは本当にあなたが修正を与えるのに役立つと思います。
これがあなたの修正のためのコードです-
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
final Calendar calendar = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
//Min date setting part
cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DAY_OF_MONTH, dd);
cal.set(Calendar.YEAR, yy - 2);
datePickerDialog.setMinDate(cal.getTimeInMillis());
//Maximum date setting part
Calendar calen = Calendar.getInstance();
calen.set(Calendar.MONTH, mm);
calen.set(Calendar.DAY_OF_MONTH, dd);
calen.set(Calendar.YEAR, yy + 2);
datePickerDialog.setMaxDate(calen.getTimeInMillis());
datePickerDialog.show();
}
DatePicker
クラスを使用する必要があるMinDateとMaxDateを設定できます。
class MDatePickerDialog extends DatePickerDialog {
MDatePickerDialog(Context c) {
super(c, null, 2016, 11, 23);
Date min = new Date(2018-1900, 4, 21);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView();
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
}
}
これがお役に立てば幸いです。
(getDatePicker()を呼び出すだけで)DatePickerDialogから基になるDatePickerを取得し、次を使用してその境界を設定できます。
setMinDate(long minDate)
setMaxDate(long maxDate)
ここで、引数は、デフォルトのタイムゾーンでの1970年1月1日00:00:00からの通常のミリ秒数です。もちろん、これらの値を計算する必要がありますが、Calendarクラスを使用する場合は簡単です。現在の日付を渡し、そこからx年を加算または減算するだけです。