android 实现日期选择器

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?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>

 

代码中的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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://www.open-open.com/lib/view/open1364268229062.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。