datepickerdialog隐藏日历并将我的日期选择器视图更改为标准模式

时间:2016-10-21 06:41:03

标签: java android datepicker

我想将日期选择器视图更改为标准模式

enter image description here

enter image description here

我的代码是

dateOfBirthET = (EditText) findViewById(R.id.dateOfBirth);
        //setting dateSetListener
        final 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();
                updateLabelToSave();
            }

        };

        //setting onClickListener on setDate
        dateOfBirthET.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                DatePickerDialog dpd = new DatePickerDialog(RegisterActivity.this, date,
                        myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                        myCalendar.get(Calendar.DAY_OF_MONTH));


                //setting maxDate on tempCal
                long maxDate = new Date().getTime();
                tempCal.setTimeInMillis(maxDate);
                tempCal.set(Calendar.YEAR, tempCal.get(Calendar.YEAR) - 16);

                dpd.getDatePicker().setMaxDate(tempCal.getTimeInMillis());

                dpd.show();
            }
        });

    }

我也试过这段代码,但没有工作

dpd.getDatePicker().setCalendarViewShown(false);

2 个答案:

答案 0 :(得分:1)

您只需在创建DatePickerDialog实例

时更改所需的主题
DatePickerDialog dpd = new DatePickerDialog(RegisterActivity.this, android.R.style.Theme_Holo_Dialog ,date,
                        myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                        myCalendar.get(Calendar.DAY_OF_MONTH));

为我工作测试了android 6.0 marshmallow。

答案 1 :(得分:0)

从它所说的setCalendarViewShown doc

  

在DatePicker_datePickerMode中调用此方法无效   属性设置为日历。

从Android L开始,选择了Material主题后,android:datePickerMode的默认布局为日历(请参阅here

因此,如果您想将DatePickerDialog更改为spiner样式,则必须更改android:datePickerMode

现在我看到datePickerMode无法以编程方式更改,它只能通过配置XML更改

<DatePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:datePickerMode="spinner"
    />

因此我认为您应该创建一个自定义DatePickerDilog布局