本例通过点击button显示DatePicker对话框
先看截图
布局文件很简单,只是一个Button
首先获取系统时间
private int mYear; private int mMonth; private int mDay; private Calendar calendar;
calendar = Calendar.getInstance(); mYear = calendar.get(Calendar.YEAR); mMonth = calendar.get(Calendar.MONTH); mDay = calendar.get(Calendar.DAY_OF_MONTH);
下面来看一下如何显示DatePicker
有两种方法:
一、直接new一个Dialog
mBtnBirthday.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //mDateSetListener监听用户选择 //mYear, mMonth, mDay当前日期 new DatePickerDialog(SettingsEditUserInfo.this, mDateSetListener, mYear, mMonth, mDay).show(); } });
二、使用showDialog显示
private static final int DATE_DIALOG_ID = 1;
showDialog(DATE_DIALOG_ID);
/** * 当显示时间窗口被创建时调用 */ @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); } return null; } @Override protected void onPrepareDialog(int id, Dialog dialog) { switch (id) { case DATE_DIALOG_ID: ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay); break; default: break; } }
设置显示当前日期
/** * 设置日期 */ private void setDateTime() { final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay =c.get(Calendar.DAY_OF_MONTH);
//更新Button上显示的日期
updateDateDisplay(); }
监听事件
/** * 监听日期变化 */ private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; //更新Button上显示的日期 updateDateDisplay(); } };
/** * 更新日期显示(记得month要+1,因为DatePicker索引是0-11) */ private void updateDateDisplay() { mBtnBirthday.setText(new StringBuilder().append(mYear).append("-") .append(mMonth + 1).append("-").append(mDay)); }
over