Я хочу открыть свой DatePicker с текущей даты до 18 лет назад для проверки даты рождения.
Возможно, это не совсем то, что вы искали. Но тем не менее вы можете иметь отправную точку и манипулировать ею. Обязательно обновите приведенный ниже ответ.
Попробуйте это в файле XML:
<EditText
android:id = "@+id/Birthday"
custom:font = "@string/font_avenir_book"
android:clickable = "true"
android:editable = "false"
android:hint = "@string/birthday"/>
Теперь в файле Java:
final Calendar myCalendar = Calendar.getInstance();
EditText edittext= (EditText) findViewById(R.id.Birthday);
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
edittext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DatePickerDialog(classname.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
Теперь добавьте метод в вышеуказанное действие.
private void updateLabel() {
String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
edittext.setText(sdf.format(myCalendar.getTime()));
}
Добавьте android:focusable = "false" в XML-файл EditText, чтобы разрешить одно касание.
Этот ответ был скопирован из Datepicker: как открыть всплывающее окно выбора даты при нажатии на edittext.
Но это не имеет ничего общего с точкой 18-летней давности по вопросу
Просто добавьте строку ниже
myCalendar.add(Calendar.YEAR,-18)
new DatePickerDialog(getActivity(), dateExpiry, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
@Мега Инфоматикс
LocalDate.now(yourTimeZone).minusYears(18). Для использованияLocalDateиз java.time, современного API даты и времени Java, на Android требуется либо уровень API 26, либо добавление тридесятьABP в свой проект. При передаче значения месяца изLocalDateв средство выбора даты не забудьте вычесть 1, потому что средство выбора даты нумерует месяцы от 0.