TimePickerDialog和DatePickerDialog分别用于选择日期和时间,都是通过OnDate/TimeSetListenerr监听设置日期/时间事件,设置后调用OnDate/TimeSet()。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_date1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="日期"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_date"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_above="@+id/tv_time1"
android:layout_toRightOf="@+id/tv_date1"
android:text="2016-0-03"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_time1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_date1"
android:text="时间"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_date"
android:layout_toRightOf="@+id/tv_time1"
android:text="22:22"
android:textSize="20sp" />
<Button
android:id="@+id/btn_date"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_time1"
android:onClick="onClick"
android:text="编辑日期"
android:textSize="20sp" />
<Button
android:id="@+id/btn_time"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@id/tv_time"
android:layout_toRightOf="@+id/btn_date"
android:onClick="onClick"
android:text="编辑时间"
android:textSize="20sp" />
</RelativeLayout>
尽量把每一个逻辑模块写成单独一个方法
public class DateTimePickerDialog extends Activity {
private TextView mTextViewDate, mTextViewTime;
private Calendar mCalendar = Calendar.getInstance(Locale.CHINA);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datetime);
initView();
}
private void initView() {
mTextViewDate = (TextView) findViewById(R.id.tv_date);
mTextViewTime = (TextView) findViewById(R.id.tv_time);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_date:
showDataDialog();
break;
case R.id.btn_time:
showTimeDialog();
break;
default:
break;
}
}
/**
* 显示时间对话框
*/
private void showTimeDialog() {
OnTimeSetListener timeSetListener = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// 根据时间对话框的调整,设置时和分
mCalendar.set(Calendar.HOUR, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mTextViewTime.setText(hourOfDay + ":" + minute);
}
};
// 根据Calendar对象获取到的时、分创建对话框,true表示24小时
TimePickerDialog timePickerDialog = new TimePickerDialog(DateTimePickerDialog.this, timeSetListener,
mCalendar.get(Calendar.HOUR), mCalendar.get(Calendar.MINUTE), true);
// show出来
timePickerDialog.show();
}
/**
* 显示日期对话框
*/
private void showDataDialog() {
OnDateSetListener dateSetListener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 根据对话框的调整,设置日历
mCalendar.set(year, monthOfYear, dayOfMonth);
// 创建日期格式器对象
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 将当前日期显示在TextView上
mTextViewDate.setText(dateFormat.format(mCalendar.getTime()));
}
};
// 创建对话框
DatePickerDialog datePickerDialog = new DatePickerDialog(DateTimePickerDialog.this, dateSetListener,
mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
}
当然这只是系统自带的默认显示形式,我们也可以自定义显示形式。