新建一个layout,命名为:common_datetime.xml,代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<DatePicker
android:id="@+id/datepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false" />
</LinearLayout>
新建一个类(名为DateTimePickDialogUtil.java)实现接口OnDateChangedListener代码如下
public class DateTimePickDialogUtil implements OnDateChangedListener{
private DatePicker datePicker;
private AlertDialog ad;
private String dateTime;
private String initDate;
private Activity activity;
public DateTimePickDialogUtil(Activity activity, String initDate) {
this.activity = activity;
this.initDate = initDate;
this.dateTime=initDate;
}
//初始化DatePicker
private void init(DatePicker datePicker){
Calendar calendar = Calendar.getInstance();
if (!(null == initDate || "".equals(initDate))) {
calendar = this.getCalendar(initDate);
} else {
initDate = calendar.get(Calendar.YEAR) + "-"
+ calendar.get(Calendar.MONTH) + "-"
+ calendar.get(Calendar.DAY_OF_MONTH);
}
datePicker.init(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH)-1,
calendar.get(Calendar.DAY_OF_MONTH), this);
}
//将字符串YYYY-MM-DD变成年月日
private Calendar getCalendar(String initDate) {
Calendar calendar = Calendar.getInstance();
String s[]=initDate.split("-");
calendar.set(Integer.valueOf(s[0]),Integer.valueOf(s[1]),Integer.valueOf(s[2]));
return calendar;
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(),
datePicker.getDayOfMonth());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dateTime = sdf.format(calendar.getTime());
ad.setTitle(dateTime);
}
public AlertDialog datePicKDialog(final TextView inputDate) {
LinearLayout dateTimeLayout = (LinearLayout) activity
.getLayoutInflater().inflate(R.layout.common_datetime, null);
datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
init(datePicker);
ad = new AlertDialog.Builder(activity)
.setTitle(initDate)
.setView(dateTimeLayout)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
inputDate.setText(dateTime);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
inputDate.setText(initDate);
}
}).show();
return ad;
}
}
在activity_main.xml中添加控件(button、TextView都可以)
在MainActivity.java添加监听:
final TextView inputDate=(TextView)findViewById(R.id.inputDate);
inputDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DateTimePickDialogUtil(MainActivity.this,initStartDateTime).datePicKDialog(inputDate);
}
});