日期选择器警报对话框

时间:2013-02-06 11:51:55

标签: android datepicker

当我在Android 3.2和android 4.0.3中运行我的代码时,它显示了不同的日期选择器..我希望日期选择器像第一个图像的轮盘..我知道2.3.3显示旧的选择器..但我不喜欢我不知道为什么我在4.0.3中变老了,这在3.2中是新的。它也与Number Picker相同。

这是我的代码:

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        if (picker == 1) {
            final long lDate = mDay;
            dateStart.set(Calendar.YEAR, mYear);
            dateStart.set(Calendar.MONTH, mMonth);
            dateStart.set(Calendar.DATE, mDay);
            Log.d("startdate", "" + dateStart);
            if (lDate != -1) {
                UpdateStartDateTimeView();

                return;
            }

        }


        updateDisplay();
    }
};

This i got in 3.2 This i got in 4.0.3

3 个答案:

答案 0 :(得分:1)

如果您使用原生选择器,Android会自动选择与当前版本对应的。通过创建自定义对话框,您只能确保在Android版本中显示唯一对话框。因此,您需要了解独特的选择器是否值得设计自定义选择器。

答案 1 :(得分:0)

DatePickerDialog有一个接受主题的构造函数

DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

只需使用

更新您的代码即可

用于轻型全息主题

DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            android.R.style.Theme_Holo_Light_Dialog_NoActionBar, 
new DateListener(v), mTime.year, mTime.month, mTime.monthDay);

黑暗的全息主题

DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            android.R.style.Theme_Holo__Dialog_NoActionBar, 
new DateListener(v), mTime.year, mTime.month, mTime.monthDay);

答案 2 :(得分:0)

如果我理解你的话,你就会在Andoid版本4中获得一个旧的对话框样式。当我为对话框片段设置 STYLE_NO_FRAME 时,我遇到了这个问题。在这种情况下,日期选择器总是旧的设计,我不知道为什么会这样。如果您想要始终获得现代UI,请确保将 STYLE_NORMAL 设置为对话框片段。为此,您需要在对话框片段的OnCreate回调方法中添加以下行。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NORMAL, 0);
}