(1)首先在布局文件中定义一个Button以及对应的id
(2)当点击该按钮时,代码如下:
// 弹出对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
null,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
效果如图:
(3)如果想要给【取消】、【确定】按钮添加事件的话,【取消】不用管,因为当你点击时会关闭当前对话,我们只需写确认的逻辑,代码如下:
// 弹出对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
null,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
// 确认按钮
datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(view -> {
toast("positive button");
datePickerDialog.dismiss();
});
(4)获取选中后的日期,代码如下:
// 弹出对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
null,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
// 确认按钮
datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(view -> {
// 确认年月日
int year = datePickerDialog.getDatePicker().getYear();
int monthOfYear = datePickerDialog.getDatePicker().getMonth() + 1;
int dayOfMonth = datePickerDialog.getDatePicker().getDayOfMonth();
toast(formatDate(year, monthOfYear, dayOfMonth));
// 关闭dialog
datePickerDialog.dismiss();
});
其中format()方法是用来格式化日期的,具体如下:
private String formatDate(int year, int monthOfYear, int dayOfMonth) {
return year + "-" + String.format(Locale.getDefault(), "%02d-%02d", monthOfYear, dayOfMonth);
}
(5)DatePickerDialog控件默认展示的按钮是【取消】和【确定】,你也可以重新定义这两个按钮,改变其文字以及对应的点击事件,具体如下:
// 弹出对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
null,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
// 自定义按钮
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Negative", (dialogInterface, i) -> toast("negative button"));
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Positive", (dialogInterface, i) -> toast("positive button"));
datePickerDialog.show();
效果如图:
发现展示的文字和自己定义的不一样,这是因为控件原因,默认的是全大写的,以前在布局文件中定义Button,在设置text属性时,会发现预览图里显示的全是大写,所以针对这个,需要添加以下代码:
// 弹出对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
null,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
// 自定义按钮
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Negative", (dialogInterface, i) -> toast("negative button"));
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Positive", (dialogInterface, i) -> toast("positive button"));
datePickerDialog.show();
// 避免自定义按钮全大写
datePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setAllCaps(false);
datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setAllCaps(false);
运行,效果如下:
以上就是DatePickerDialog控件的简单介绍,觉得还阔以的点个赞mark下吧~~