为了账号安全,请及时绑定邮箱和手机立即绑定

在Android的DatePickerDialog上设置限制?

在Android的DatePickerDialog上设置限制?

素胚勾勒不出你 2019-12-02 10:51:04
如何限制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)){
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超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


查看完整回答
反对 回复 2019-12-02
?
暮色呼如

TA贡献1853条经验 获得超9个赞

由于我正在游览且无法访问我的PC,因此我无法为您提供工作代码。但是我可以给您一种实现目标的方法(或者我认为)。


我不确定这是否会完美运行,但是值得尝试的任何方式。


请尝试此代码并通知我。


“ DatepickerType”是该类的Integer公共成员变量。


private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {


    // when dialog box is closed, below method will be called.

    public void onDateSet(DatePicker view, int selectedYear,

            int selectedMonth, int selectedDay) {

        int y = Calendar.getInstance().get(Calendar.YEAR);

        switch(DatepickerType){

        case 1:

            if(selectedYear>(y-2)){

                //Add message if you want

                selectedYear = y-2;

            }

                else if(selectedYear<(y-12)) {

                //Add msg if u want

                    selectedYear = y-12;

            }


        case 2:

            if(selectedYear>(y)){

                //Add message if you want

                selectedYear = y;

            }

                else if(selectedYear<(y-2)) {

                //Add msg if u want

                    selectedYear = y-2;

            }

        }


        String year1 = String.valueOf(selectedYear);

        String month1 = String.valueOf(selectedMonth+1);

        String day1 = String.valueOf(selectedDay);

        //do what you need

        setLastStatus();


    }

};


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 643 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信