Как открыть DatePicker с текущей даты на 18 лет назад?

Я хочу открыть свой DatePicker с текущей даты до 18 лет назад для проверки даты рождения.

LocalDate.now(yourTimeZone).minusYears(18). Для использования LocalDate из java.time, современного API даты и времени Java, на Android требуется либо уровень API 26, либо добавление тридесятьABP в свой проект. При передаче значения месяца из LocalDate в средство выбора даты не забудьте вычесть 1, потому что средство выбора даты нумерует месяцы от 0.
Ole V.V. 22.10.2019 10:00
1
1
2 245
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, это не совсем то, что вы искали. Но тем не менее вы можете иметь отправную точку и манипулировать ею. Обязательно обновите приведенный ниже ответ.

Попробуйте это в файле 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-летней давности по вопросу

MrinmoyMk 09.08.2020 16:34
Ответ принят как подходящий

Просто добавьте строку ниже

 myCalendar.add(Calendar.YEAR,-18)
 new DatePickerDialog(getActivity(), dateExpiry, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH)).show();
        }

@Мега Инфоматикс

Nidhi Desai 27.06.2019 13:28

Другие вопросы по теме