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

Android   2013-03-27 08:35:12 发布
您的评价:
     
0.0
收藏     3收藏
文件夹
标签
(多个标签用逗号分隔)

利用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)

扩展阅读

Android常用控件用法
Android开源项目分类汇总
Android:Picker(DatePicker、TimerPicker、NumberPicker)
时间选择器:DatePicker 和TimePicker
Android中日期和时间控件的使用

为您推荐

Android中日期和时间控件的使用
Andorid时间控件和日期控件的Demo(代码)
Android开源项目分类汇总
时间选择器:DatePicker 和TimePicker
Android:Picker(DatePicker、TimerPicker、NumberPicker)

更多

Android
Android开发
相关文档  — 更多
相关经验  — 更多
相关讨论  — 更多