事情:
今天需要调用系统的日期弹出框,之前搞过,没做记录,忘了。毁的肠子都青了。百度..了一下.,十多篇文章皆出自一人之手,但是SDK提示已过期。继续找百度,找到一篇比较符合我的情况的。改吧改吧效果还行。
解决:
1. 弹出框设置
/*
* 弹出日期选择框
*/
private void showDateDialog() {
//阻止软键盘弹出框
birthday.setInputType(InputType.TYPE_NULL);
//初始化日期弹出框
String birth = birthday.getText().toString();
int year = 1990;
int month = 0;
int day = 1;
if(!StringUtils.isEmptyOrNull(birth)){
String [] sub = birth.split("-");
if(sub.length==3){
year = Integer.parseInt(sub[0]);
month = Integer.parseInt(sub[1])-1;
day = Integer.parseInt(sub[2]);
}
}
new DatePickerDialog(PersonalInfoActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
int month = monthOfYear+1;
int day = dayOfMonth;
String monStr = ((month<10) ? "0":"")+month;
String dayStr = ((day<10) ? "0":"")+day;
birthday.setText(year+"-"+monStr+"-"+dayStr);
}
}, year, month, day).show();
}
2. 控件的监听事件
birthday.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
showDateDialog();
}
}
});
birthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateDialog();
}
});
3.弹出框的效果