【问题标题】:How to set min-max age limit with datepicker android如何使用 datepicker android 设置最小-最大年龄限制
【发布时间】:2012-10-13 07:58:09
【问题描述】:

在我的应用程序中,我需要在 7-18 岁之间设置年龄限制。我想用有限的选项显示日期选择器。

如何使用此代码 DatePicker 将同一任务编辑到日期选择器中

我使用下面的代码来限制年份,但是当单击“+/-”按钮时,年份可以在限制范围之上/之下进行更改。我希望该用户不能增加或减少日期值。

 return new DatePickerDialog(this,
                                mDateSetListener,
                                mYear-7, mMonth, mDay);

请帮我设置出生日期的日期限制在 7-18 岁之间,如果可能的话,设置日期和月份。

另外,如何设置最小年龄限制?

谢谢。

【问题讨论】:

  • 查看文档here。特别是 android:maxDate android:MinDate android:startYearandroid:endYear 听起来像是您正在寻找的东西。
  • Thanks.please,你能用一些代码解释一下吗?

标签: android datepicker date


【解决方案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;
}
 }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2022-07-15
  • 2014-01-15
  • 2014-12-22
  • 2017-04-01
  • 2015-09-10
  • 1970-01-01
相关资源
最近更新 更多