public class MainActivity extends AppCompatActivity {
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextViewopen =(TextView) findViewById(R.id.open);
open.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View view) {
//获取日历类
Calendar calendar = Calendar.getInstance();
//弹出日历窗口,日历底部会自动显示系统自动提供的“完成”按钮,但是这种方式缺点太多
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
open.setText(i + "-" + (i1 + 1) + "-" + i2);
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE)).show();
//我们对上面的日历选择器进行简单的优化,看看是不是更完美一点
//获取日历类
Calendar calendar = Calendar.getInstance();
//实例化日历窗口,获取当前年月日
final DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, null, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE));
//如果是要为控件设置生日的话,生日不能大于当前日期
dialog.getDatePicker().setMaxDate(new Date().getTime());
/**
* 注意:上面设置的当前最大日期在不同的手机的版本有一个缺陷,首次显示日期选择器的时候,今天(就是当前日期)可以点击选择
* 但是,当你点击其他时间后会发现今天的日期不能选择了
*/
//dialog.getDatePicker().setMaxDate(new Date().getTime() + 24 * 60 * 60 * 1000);//多加一天,为了解决Android自带时间选择器不能点击当天的bug
//设置点击外部是否取消窗口
dialog.setCanceledOnTouchOutside(false);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", newDialogInterface.OnClickListener() {
@Override
public void onClick (DialogInterface dialogInterface,int i){
//获取时间采集类
DatePicker picker = dialog.getDatePicker();
open.setText(picker.getYear() + "-" + (picker.getMonth() + 1) + "-" + picker.getDayOfMonth());
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", newDialogInterface.OnClickListener() {
@Override
public void onClick (DialogInterface dialogInterface,int i){
System.out.println("");
}
});
dialog.show();
}
});
}
}