DatePicker 日期选择控件 DatePickerDialog 日期选择对话框

点此下载:Android学习指南第十讲源代码


DatePicker 日期选择控件 DatePickerDialog 日期选择对话框

日期选择的对话框漂亮,我们用一个例子演示一下:

1、main.xml的代码:

1 < ?xml version="1.0" encoding="utf-8"?>
2 <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent">
3 <textview android:id="@+id/dateDisplay" android:layout_width="fill_parent"android:textsize="20sp" android:layout_height="wrap_content">
4 </textview>
5 <button android:text="改变日期" android:id="@+id/pickDate"android:textsize="20sp" android:layout_width="wrap_content"android:layout_height="wrap_content">
6 </button>
7 </linearlayout>

其中文本框用来显示时间,按钮为了触发日期选择对话框,当然用其他组件来触发日期选择对话框也是的。

2、java代码:

01 package android.basic.lesson10;
02
03 import java.util.Calendar;
04
05 import android.app.Activity;
06 import android.app.DatePickerDialog;
07 import android.app.DatePickerDialog.OnDateSetListener;
08 import android.app.Dialog;
09 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.Button;
12 import android.widget.DatePicker;
13 import android.widget.TextView;
14
15 public class MainHelloDatePicker extends Activity {
16
17 //准备公用属性
18 private TextView dateDisplay;
19 private Button pickDate;
20 private int mYear;
21 private int mMonth;
22 private int mDay;
23
24 //准备对话框Id
25 static final int DATE_DIALOG_ID = 0;
26
27 //准备日期设置监听器
28 private OnDateSetListener dsl = new DatePickerDialog.OnDateSetListener(){
29
30 @Override
31 public void onDateSet(DatePicker view, int year, int monthOfYear,
32 int dayOfMonth) {
33 mYear =year;
34 mMonth= monthOfYear;
35 mDay= dayOfMonth;
36 dateDisplay.setText(mYear+"-"+(mMonth+1)+"-"+mDay);
37 }
38 };
39
40 //重写创建对话框方法
41 @Override
42 protected Dialog onCreateDialog(int id){
43 switch(id){
44 case DATE_DIALOG_ID:
45 //把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件
46 return new DatePickerDialog(this, dsl, mYear, mMonth, mDay);
47 }
48 return null;
49 }
50
51 /** Called when the activity is first created. */
52 @Override
53 public void onCreate(Bundle savedInstanceState) {
54 super.onCreate(savedInstanceState);
55 setContentView(R.layout.main);
56
57 //得到当前日期
58 final Calendar c = Calendar.getInstance();
59 mYear = c.get(Calendar.YEAR);
60 mMonth = c.get(Calendar.MONTH);
61 mDay = c.get(Calendar.DAY_OF_MONTH);
62
63 //获取xml中的组件
64 dateDisplay= (TextView)findViewById(R.id.dateDisplay);
65 pickDate = (Button)findViewById(R.id.pickDate);
66
67 //给日期显示组件一个初始值
68 dateDisplay.setText(mYear+"-"+(mMonth+1)+"-"+mDay);
69
70 //给按钮绑定点击监听器
71 pickDate.setOnClickListener(new View.OnClickListener() {
72 public void onClick(View v) {
73 showDialog(DATE_DIALOG_ID);
74 }
75 });
76 }
77 }

3、运行程序

 

image

读者可以特别留意一下本节关于OnDateSetListener的代码,体会监听器的作用,有兴趣的同学可以看一下DatePickDialog和DatePick的源代码。

TimePicker 时间选择控件 和 TimePickerDialog 时间选择对话框

和上一小节的例子基本相同,就不举了。

本讲暂时就到这里。

http://android.yaohuiji.com/archives/390

发表评论

电子邮件地址不会被公开。 必填项已用*标注