Android中实现日期时间选择器(DatePicker和TimePicker)

jopen 11年前

利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器。

Dialog的Content布局文件(date_time_dialog.xml):

    <?xml version="1.0" encoding="utf-8"?>        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="vertical"            android:padding="10dip" >                    <TextView                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:singleLine="true"                android:text="请选择日期"                android:textColor="#FFFFFF"                android:textSize="16sp" />                    <DatePicker                android:id="@+id/date_picker"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginTop="5dip" />                    <TextView                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_marginTop="10dip"                android:singleLine="true"                android:text="请选择时间"                android:textColor="#FFFFFF"                android:textSize="16sp" />                    <TimePicker                android:id="@+id/time_picker"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginTop="5dip" />                </LinearLayout>  

代码中的实现:

    package com.easipass.test;                import java.util.Calendar;                import android.app.Activity;        import android.app.AlertDialog;        import android.app.Dialog;        import android.content.DialogInterface;        import android.os.Bundle;        import android.text.InputType;        import android.view.MotionEvent;        import android.view.View;        import android.widget.DatePicker;        import android.widget.EditText;        import android.widget.TimePicker;                /**        * 功能描述:实现日期时间选择器        *         * @author android_ls        */        public class DateTimeActivity extends Activity implements View.OnTouchListener {                       private EditText etStartTime;                    private EditText etEndTime;                        @Override            public void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(R.layout.main);                                etStartTime = (EditText) this.findViewById(R.id.et_start_time);                etEndTime = (EditText) this.findViewById(R.id.et_end_time);                                etStartTime.setOnTouchListener(this);                etEndTime.setOnTouchListener(this);                            }                    @Override            public boolean onTouch(View v, MotionEvent event) {                if (event.getAction() == MotionEvent.ACTION_DOWN) {                            AlertDialog.Builder builder = new AlertDialog.Builder(this);                    View view = View.inflate(this, R.layout.date_time_dialog, null);                    final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);                    final TimePicker timePicker = (android.widget.TimePicker) view.findViewById(R.id.time_picker);                    builder.setView(view);                            Calendar cal = Calendar.getInstance();                    cal.setTimeInMillis(System.currentTimeMillis());                    datePicker.init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), null);                            timePicker.setIs24HourView(true);                    timePicker.setCurrentHour(cal.get(Calendar.HOUR_OF_DAY));                    timePicker.setCurrentMinute(Calendar.MINUTE);                            if (v.getId() == R.id.et_start_time) {                        final int inType = etStartTime.getInputType();                        etStartTime.setInputType(InputType.TYPE_NULL);                        etStartTime.onTouchEvent(event);                        etStartTime.setInputType(inType);                        etStartTime.setSelection(etStartTime.getText().length());                                                builder.setTitle("选取起始时间");                        builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {                                    @Override                            public void onClick(DialogInterface dialog, int which) {                                        StringBuffer sb = new StringBuffer();                                sb.append(String.format("%d-%02d-%02d",                                         datePicker.getYear(),                                         datePicker.getMonth() + 1,                                        datePicker.getDayOfMonth()));                                sb.append("  ");                                sb.append(timePicker.getCurrentHour())                                .append(":").append(timePicker.getCurrentMinute());                                        etStartTime.setText(sb);                                etEndTime.requestFocus();                                                                dialog.cancel();                            }                        });                                            } else if (v.getId() == R.id.et_end_time) {                        int inType = etEndTime.getInputType();                        etEndTime.setInputType(InputType.TYPE_NULL);                            etEndTime.onTouchEvent(event);                        etEndTime.setInputType(inType);                        etEndTime.setSelection(etEndTime.getText().length());                                builder.setTitle("选取结束时间");                        builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {                                    @Override                            public void onClick(DialogInterface dialog, int which) {                                        StringBuffer sb = new StringBuffer();                                sb.append(String.format("%d-%02d-%02d",                                         datePicker.getYear(),                                         datePicker.getMonth() + 1,                                         datePicker.getDayOfMonth()));                                sb.append("  ");                                sb.append(timePicker.getCurrentHour())                                .append(":").append(timePicker.getCurrentMinute());                                etEndTime.setText(sb);                                                                dialog.cancel();                            }                        });                    }                                        Dialog dialog = builder.create();                    dialog.show();                }                        return true;            }                    }  

运行后的效果图:

 Android中实现日期时间选择器(DatePicker和TimePicker)

点击EditTet之后

Android中实现日期时间选择器(DatePicker和TimePicker)

点击确定之后

Android中实现日期时间选择器(DatePicker和TimePicker)