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

Posted

技术标签:

【中文标题】datepickerdialog 隐藏日历并将我的日期选择器视图更改为标准模式【英文标题】:datepickerdialog hide calendar and change my date picker view to standard mode 【发布时间】:2017-03-03 08:52:23 【问题描述】:

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

来自

我的代码是

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

【问题讨论】:

参考此链接***.com/questions/28740657/… 【参考方案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。

【讨论】:

【参考方案2】:

上面写着setCalendarViewShown doc

DatePicker_datePickerMode 时调用该方法无效 属性设置为日历。

从 Android L 开始,选择 Material 主题后,android:datePickerMode 的默认布局是日历(参见 here)

所以如果你想把你的 DatePickerDialog 改成 spiner 风格,你必须改android:datePickerMode

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

<DatePicker
    android:layout_
    android:layout_
    android:datePickerMode="spinner"
    />

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

【讨论】:

以上是关于datepickerdialog 隐藏日历并将我的日期选择器视图更改为标准模式的主要内容,如果未能解决你的问题,请参考以下文章

Android DatePickerDialog样式不一致的问题

android DatePickerDialog怎么设置日期选择范围。

20161221

如何用bootstrap-datepicker 做日历

日期选择器日历被隐藏在下拉列表中

在 Android 日历视图中首先显示年份选择