实例
实现如下日历,点击日历图标进入到选择日历,并获取到日历的点击事件即获取点击的日期:年月日。
-+
实现思路
使用Android提供的DatePickerDialog,
首先设置日历的点击事件,
然后在点击事件里设置日期选择器对话框的事件监听器,
最后创建DatePickerDialog的实例并传入参数。
实现代码
注意:不要忘记加一个接口。
下面的calendar是我的日历图标的名字,为日历图标设置一个点击事件。
ImageView calendar;
calendar.setOnClickListener(this);
(接口implements View.OnClickListener)
重写点击方法,在点击方法里设置一个DatePickerDialog日期选择器,并注册监听事件,监听事件有四个参数,后三个分别为你点击的年月日。最后在点击事件里创建DatePickerDialog实例并传入默认参数,第二个是主题,可选择1,2,3,4,5;后三个即表示打开日期选择框的默认年月日。
注意:月份是从0开始的;报红则对报红部分使用shift + alt + enter
public void onClick(View view) {
DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month += 1;
}
};
new DatePickerDialog(MainActivity.this, 2, onDateSetListener, 2023, 5, 7).show();
}
默认显示当天日期
先获取到当前的年月日,然后传入到DatePickerDialog参数中。
代码如下:
SimpleDateFormat format1 = new SimpleDateFormat("YYYY");
SimpleDateFormat format2 = new SimpleDateFormat("MM");
SimpleDateFormat format3 = new SimpleDateFormat("dd");
format1.setTimeZone(TimeZone.getTimeZone("GMT+08"));
format2.setTimeZone(TimeZone.getTimeZone("GMT+08"));
format3.setTimeZone(TimeZone.getTimeZone("GMT+08"));
Date curDate = new Date(System.currentTimeMillis());
year = format1.format(curDate);
month = format2.format(curDate);
day = format3.format(curDate);
@SuppressLint("ResourceType")
public void onClick(View view) {
DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month+=1;
Toast.makeText(MainActivity.this,"你选择的日期是"+year+"年"+month+"月"+day+"日",Toast.LENGTH_SHORT).show();
}
};
new DatePickerDialog(MainActivity.this, 2, onDateSetListener, Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day)).show();
}