首页 > 代码库 > Android中实现日期时间选择器(DatePicker和TimePicker)

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

利用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;    }    }

运行后的效果图:

点击EditTet之后

点击确定之后

 

http://blog.csdn.net/android_ls/article/details/8644067

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