Как установить минимальное ограничение по возрасту с помощью 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;
}
 }
Другие вопросы по тегам