Как установить минимальное ограничение по возрасту с помощью DatePicker Android
В моем заявлении мне нужно установить возрастное ограничение от 7 до 18 лет. Я хочу показать дату выбора с ограниченным диапазоном вариантов.
Как я могу редактировать для той же задачи в Date- Picker с этим кодом DatePicker
Я использую приведенный ниже код для ограничения года, но когда нажата кнопка "+/-", год можно изменить выше / ниже ограниченного диапазона. Я хочу, чтобы пользователь не мог увеличивать или уменьшать значения даты.
return new DatePickerDialog(this,
mDateSetListener,
mYear-7, mMonth, mDay);
Пожалуйста, помогите мне установить предел даты рождения от 7 до 18 лет, и, если возможно, укажите день и месяцы.
Кроме того, как я могу установить минимальный возрастной предел?
Благодарю.
1 ответ
Решение
Потратив столько времени, я наконец нашел решение.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
mPickDate = (Button) findViewById(R.id.pickDate);
mPickDate.setOnClickListener(this);
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
maxYear = mYear - 7;
maxMonth = mMonth;
maxDay = mDay;
minYear = mYear - 18;
minMonth = mMonth;
minDay = mDay;
// display the current date (this method is below)
updateDisplay(maxYear, maxMonth, maxDay);
}
private void updateDisplay(int year, int month, int day) {
// TODO Auto-generated method stub
mDateDisplay.setText(new StringBuilder()
// Month is 0 based so add 1
.append(month + 1).append("-").append(day).append("-")
.append(year).append(" "));
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(DATE_DIALOG_ID);
}
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
/*
* mYear = year;
* mMonth = monthOfYear;
* mDay = dayOfMonth;
*/
// updateDisplay();
if (year > maxYear ||monthOfYear > maxMonth && year == maxYear||
dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){
view.updateDate(maxYear, maxMonth, maxDay);
updateDisplay(maxYear, maxMonth, maxDay);
}
else if (year < minYear ||monthOfYear < minMonth && year == minYear||
dayOfMonth < minDay && year == minYear && monthOfYear == minMonth) {
view.updateDate(minYear, minMonth, minDay);
updateDisplay(minYear, minMonth, minDay);
}
else {
view.updateDate(year, monthOfYear, dayOfMonth);
updateDisplay(year, monthOfYear, dayOfMonth);
}
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, mDateSetListener, mYear - 7,
mMonth, mDay);
}
return null;
}
}