猿问

在Android的DatePickerDialog上设置限制?

如何限制DatePickerDialog选择过去2-12年或当前日期0-2年的日期?


我有活动的DatePickerDialog,用于获取儿童和婴儿的出生日期。儿童年龄为(2-12岁),婴儿年龄为(0-2岁)。如果我通过1,则年龄限制应为(2-12岁),如果我通过2,则年龄限制应为(0-2岁)。


我该怎么做才能在日历中获得此功能?


我的日历代码是:


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);

                String myFormat = "dd/MM/yy"; //In which you need put here

                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                dateofBirth.setText(sdf.format(myCalendar.getTime()));

            }

        };


dateofBirth.setOnClickListener(new OnClickListener() {


            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                showDialog(DATE_DIALOG_ID);


            }

        });


public Dialog onCreateDialog(int id) {

    final Calendar now = Calendar.getInstance();


    switch (id) {

    case DATE_DIALOG_ID:

        // set date picker as current date

        DatePickerDialog _date =   new DatePickerDialog(this, date,myCalendar

                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),

                myCalendar.get(Calendar.DAY_OF_MONTH)){

素胚勾勒不出你
浏览 653回答 3
3回答

蛊毒传说

所有其他答案似乎都令人费解,所以我只想指出一个明显的问题:您可以通过(简单地调用)DatePicker从a 获取基础,并使用以下方法设置其边界:DatePickerDialoggetDatePicker()setMinDate(long minDate)setMaxDate(long maxDate)其中,自变量是默认时区中自1970年1月1日00:00:00以来的通常毫秒数。当然,您仍然必须计算这些值,但这对于Calendar该类而言应该是微不足道的:只需获取当前日期并加上或减去x年份即可。更细心的读者会注意到,直到API级别11为止,上述设置器才可用。如果您仅针对该(或较新的)平台,则可以使用。如果您还想支持姜饼设备(Android 2.3 / API级别9+),则可以改用backport版本DatePicker。

暮色呼如

由于我正在游览且无法访问我的PC,因此我无法为您提供工作代码。但是我可以给您一种实现目标的方法(或者我认为)。我不确定这是否会完美运行,但是值得尝试的任何方式。请尝试此代码并通知我。“ DatepickerType”是该类的Integer公共成员变量。private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {&nbsp; &nbsp; // when dialog box is closed, below method will be called.&nbsp; &nbsp; public void onDateSet(DatePicker view, int selectedYear,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int selectedMonth, int selectedDay) {&nbsp; &nbsp; &nbsp; &nbsp; int y = Calendar.getInstance().get(Calendar.YEAR);&nbsp; &nbsp; &nbsp; &nbsp; switch(DatepickerType){&nbsp; &nbsp; &nbsp; &nbsp; case 1:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(selectedYear>(y-2)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Add message if you want&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedYear = y-2;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if(selectedYear<(y-12)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Add msg if u want&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedYear = y-12;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; case 2:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(selectedYear>(y)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Add message if you want&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedYear = y;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if(selectedYear<(y-2)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Add msg if u want&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedYear = y-2;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; String year1 = String.valueOf(selectedYear);&nbsp; &nbsp; &nbsp; &nbsp; String month1 = String.valueOf(selectedMonth+1);&nbsp; &nbsp; &nbsp; &nbsp; String day1 = String.valueOf(selectedDay);&nbsp; &nbsp; &nbsp; &nbsp; //do what you need&nbsp; &nbsp; &nbsp; &nbsp; setLastStatus();&nbsp; &nbsp; }};
随时随地看视频慕课网APP

相关分类

Android
我要回答