利用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之後
點擊確定之後