Android组件的使用:DatePicker,TimePicker

1、DatePicker的使用

1、 在布局文件中声明一个DatePicker控件时,切换到视图模式时看不到效果,需要通过程序控制对其进行初始化。

1 <DatePicker    -->声明DatePicker控件
2         android:id="@+id/dp_showdate"            -->设置控件id
3         android:layout_width="match_parent"      -->设置控件宽度为父容器宽度
4         android:layout_height="wrap_content"/>   -->设置控件高度为父容器高度
 1 @Override
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);        //调用父类方法
 4         super.setContentView(R.layout.datepicker_layout);//设置布局管理器
 5         /*         year:表示要设置的年份
 6          *  monthOfYear:表示要设置的一年中的某月
 7          *   dayOfMonth:表示要设置的一个月中的某天
 8          * onDateChangedListener:表示要设置的时间改变的监听器,当时间改变时触发该事件
 9          */
10         dp_showdate.init(year, monthOfYear, dayOfMonth, onDateChangedListener);
11     }

 2、要对以上:year、monthOfYear、dayOfMonth进行初始化,可以使用java中提供的Calendar类方便的获得。

1 //使用Calendar类提供的日期方法,获得相应的年月日
2     Calendar calendar = Calendar.getInstance();    //通过Calendar类提供的静态方法:类名.方法()获得Calendar实例
3     int year = calendar.get(Calendar.YEAR);       //设置年份
4 int monthOfYear = calendar.get(Calendar.YEAR);  //设置一年中的某月 5 int dayOfMonth = calendar.get(Calendar.YEAR);   //设置一月中的某天

3、然后再设置日期改变监听:

1 dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
2             @Override
3             public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
4                 //什么都没做
5             }
6         });

 运行效果:

 

1.1为DatePicker添加日期改变监听

在布局文件中添加一个TextView,用于显示日期

1 <TextView       -->定义一个TextView控件
2         android:id="@+id/tv_showdate"              -->设置控件id
3         android:layout_width="match_parent"        -->设置控件宽度
4         android:layout_height="wrap_content"/>     -->设置控件高度

在监听方法中初始化年月日:

1 DatePickerDemoActivity.this.year = year;                //选择后的年份
2 DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
3 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天

定义一个方法,用于显示信息:

1     /*
2      * 该方法用于显示信息
3      */
4     public void showInfo(int year,int monthOfYear,int dayOfMonth){
5         String info =year+""+monthOfYear+""+dayOfMonth+"";
6         tv_showdate.setText(info);//把输出的信息放到TextView中
7     }

运行效果:

完整代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout    -->定义线性布局管理器
 3     xmlns:android="http://schemas.android.com/apk/res/android"   -->命名控件
 4     android:layout_width="match_parent"               -->设置管理器宽度为屏幕宽度
 5     android:layout_height="match_parent"                -->设置管理器高度为屏幕高度
 6     android:orientation="vertical" >                  -->设置管理器中的内容为垂直摆放
 7     <TextView    -->定义组件
 8         android:id="@+id/tv_showdate"             -->为组件设置id
 9         android:layout_width="match_parent"    -->设置组件宽度为父容器宽度
10         android:layout_height="wrap_content"/>   -->设置组件高度
11     <DatePicker   -->定义组件
12         android:id="@+id/dp_showdate"         -->设置组件id
13         android:layout_width="match_parent"     -->设置组件宽度为父容器宽度
14         android:layout_height="wrap_content"/>   -->设置组件高度为包裹内容高度
15 </LinearLayout>

DatePickerDemoActivity类:

 1 package com.example.basiccomponent2;
 2 
 3 import java.util.Calendar;
 4 
 5 import android.app.Activity;
 6 import android.os.Bundle;
 7 import android.widget.DatePicker;
 8 import android.widget.DatePicker.OnDateChangedListener;
 9 import android.widget.TextView;
10 
11 public class DatePickerDemoActivity extends Activity {
12     private TextView tv_showdate = null;          //声明TextView对象
13     private DatePicker dp_showdate = null;        //声明DatePicker对象
14     //使用Calendar类提供的日期方法,获得相应的年月日
15     Calendar calendar = Calendar.getInstance();
16     int year = calendar.get(Calendar.YEAR);
17     int monthOfYear = calendar.get(Calendar.YEAR);
18     int dayOfMonth = calendar.get(Calendar.YEAR);
19     
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         super.setContentView(R.layout.datepicker_layout);//设置布局管理器
24         //初始化view
25         dp_showdate = (DatePicker)super.findViewById(R.id.dp_showdate);
26         tv_showdate = (TextView)super.findViewById(R.id.tv_showdate);
27         /*         year:表示要设置的年份
28          *  monthOfYear:表示要设置的一年中的某月
29          *   dayOfMonth:表示要设置的一个月中的某天
30          * onDateChangedListener:表示要设置的时间改变的监听器
31          */
32         dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
33             @Override
34             public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
35                 DatePickerDemoActivity.this.year = year;                //选择后的年份
36                 DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
37                 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天
38                 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth);//调用显示信息方法
39             }
40         });
41     }
42     /*
43      * 该方法用于显示信息
44      */
45     public void showInfo(int year,int monthOfYear,int dayOfMonth){
46         String info =year+""+(monthOfYear+1)+""+dayOfMonth+"";
47         tv_showdate.setText(info);//把输出的信息放到TextView中
48     }
49     
50 }

 修改显示日期效果,为小于10的数字添加0:

 1     public void showInfo(int year, int monthOfYear, int dayOfMonth) {
 2         String info = year + "" + addZero(monthOfYear+1) + "" + addZero(dayOfMonth) + "";
 3         tv_showdate.setText(info);// 把输出的信息放到TextView中
 4     }
 5     public String addZero(int num){
 6         String str = null;
 7         if(num<10){
 8             str = "0"+num;
 9         }else{
10             str = ""+num;
11         }
12         return str;
13     }

2、TimePicker的使用

TimePicker的使用和DatePicker类似,但是不用给其初始化,在布局文件中添加一个TimePicker组件:

1 <TimePicker 
2         android:id="@+id/tp_showtime"
3         android:layout_width="match_parent"
4         android:layout_height="wrap_content"/>

在Activity类中,完整代码:

 1 package com.example.basiccomponent2;
 2 
 3 import java.util.Calendar;
 4 
 5 import android.app.Activity;
 6 import android.os.Bundle;
 7 import android.widget.DatePicker;
 8 import android.widget.DatePicker.OnDateChangedListener;
 9 import android.widget.TextView;
10 import android.widget.TimePicker;
11 import android.widget.TimePicker.OnTimeChangedListener;
12 
13 public class DatePickerDemoActivity extends Activity {
14     private TextView tv_showdate = null; //
15     private DatePicker dp_showdate = null; //
16     private TimePicker tp_showtime = null;
17     // 使用Calendar类提供的日期方法,获得相应的年月日
18     Calendar calendar = Calendar.getInstance();
19     int year = calendar.get(Calendar.YEAR);
20     int monthOfYear = calendar.get(Calendar.YEAR);
21     int dayOfMonth = calendar.get(Calendar.YEAR);
22 
23     int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
24     int minute = calendar.get(Calendar.MINUTE);
25     @Override
26     protected void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         super.setContentView(R.layout.datepicker_layout);// 设置布局管理器
29         // 初始化view
30         dp_showdate = (DatePicker) super.findViewById(R.id.dp_showdate);
31         tv_showdate = (TextView) super.findViewById(R.id.tv_showdate);
32         tp_showtime = (TimePicker)super.findViewById(R.id.tp_showtime);
33         /*
34          * year:表示要设置的年份 monthOfYear:表示要设置的一年中的某月 dayOfMonth:表示要设置的一个月中的某天
35          * onDateChangedListener:表示要设置的时间改变的监听器
36          */
37         dp_showdate.init(year, monthOfYear, dayOfMonth,new OnDateChangedListener() {
38                     @Override
39                     public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
40                         DatePickerDemoActivity.this.year = year; // 选择后的年份
41                         DatePickerDemoActivity.this.monthOfYear = monthOfYear; // 选择后的月份
42                         DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; // 选择后的天
43                         DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
44                     }
45         });
46         //设置时间事件
47         tp_showtime.setOnTimeChangedListener(new OnTimeChangedListener(){
48             @Override
49             public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
50                 DatePickerDemoActivity.this.hourOfDay = hourOfDay;
51                 DatePickerDemoActivity.this.minute = minute;
52                 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
53             }
54         });
55     }
56 
57     /*
58      * 该方法用于显示信息
59      */
60     public void showInfo(int year, int monthOfYear, int dayOfMonth,int hourOfDay,int minute) {
61         String info = year + "" + addZero(monthOfYear+1) 
62                            + "" + addZero(dayOfMonth) 
63                            + "" + addZero(hourOfDay)
64                            + "" + addZero(minute)
65                            + "";
66         tv_showdate.setText(info);// 把输出的信息放到TextView中
67     }
68     public String addZero(int num){
69         String str = null;
70         if(num<10){
71             str = "0"+num;
72         }else{
73             str = ""+num;
74         }
75         return str;
76     }
77 
78 }

原文地址:https://www.cnblogs.com/zhengweicong/p/3205684.html