日期(DatePicker)、时间(TimePicker)是两个比较易用的控件,他们都是从帧布局FrameLayout派生而出的;他们在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期和时间;如果程序需要获取日期和时间,则可以通过为DatePicker添加OnDateChangedListener进行监听,为TimePicker添加OnTimeChangeListenter进行监听来实现。
以一个让用户选择日期和时间的例子来展示下他们的功能和用法。
layout/main.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 8 <!-- 显示用户输入日期、时间的控件 --> 9 <EditText android:id="@+id/show" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" 12 android:editable="false" 13 android:cursorVisible="false" 14 android:text="选择购买本书的具体时间" 15 /> 16 <!-- 定义一个DatePicker组件 --> 17 <DatePicker android:id="@+id/datePicker" 18 android:layout_width="match_parent" 19 android:layout_height="260dip" 20 android:layout_gravity="center_horizontal" 21 /> 22 <!-- 定义一个TimePicker组件 --> 23 <TimePicker android:id="@+id/timePicker" 24 android:layout_width="match_parent" 25 android:layout_height="160dip" 26 android:layout_gravity="center_horizontal" 27 /> 28 29 </LinearLayout>
上面的代码里面定义了三个组件:EditText 、日期、时间
主程序:com.example.choosedate.ChooseDate.java
1 package com.example.choosedate; 2 3 import java.util.Calendar; 4 5 import android.support.v7.app.ActionBarActivity; 6 import android.support.v7.app.ActionBar; 7 import android.support.v4.app.Fragment; 8 import android.os.Bundle; 9 import android.view.LayoutInflater; 10 import android.view.Menu; 11 import android.view.MenuItem; 12 import android.view.View; 13 import android.view.ViewGroup; 14 import android.widget.DatePicker; 15 import android.widget.DatePicker.OnDateChangedListener; 16 import android.widget.EditText; 17 import android.widget.TimePicker; 18 import android.widget.TimePicker.OnTimeChangedListener; 19 import android.os.Build; 20 21 public class ChooseDate extends ActionBarActivity { 22 23 //定义5个记录当前时间的变量 24 private int year; 25 private int month; 26 private int day; 27 private int hour; 28 private int minute; 29 30 @Override 31 protected void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.main); 34 //获得组件 35 DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker); 36 TimePicker timePicker = (android.widget.TimePicker) findViewById(R.id.timePicker); 37 38 //获取当前的年、月、日、小时、分钟 39 Calendar c = Calendar.getInstance(); 40 year = c.get(Calendar.YEAR); 41 month = c.get(Calendar.MONTH); 42 day = c.get(Calendar.DAY_OF_MONTH); 43 hour = c.get(Calendar.HOUR); 44 minute = c.get(Calendar.MINUTE); 45 46 //初始化datePicker组件,并指定监听器 47 datePicker.init(year, month, day, new OnDateChangedListener() { 48 49 @Override 50 public void onDateChanged(DatePicker view, int year, int month, 51 int day) { 52 ChooseDate.this.year = year; 53 ChooseDate.this.month = month; 54 ChooseDate.this.day = day; 55 56 //显示当前日期、时间 57 showDate(year, month , day , hour, minute); 58 } 59 }); 60 61 //初始化timePicker组件指定监听器 62 timePicker.setOnTimeChangedListener(new OnTimeChangedListener() { 63 64 @Override 65 public void onTimeChanged(TimePicker view, int hour, int minute) { 66 ChooseDate.this.hour = hour; 67 ChooseDate.this.minute = minute; 68 //显示当前日期、时间 69 showDate(year, month , day , hour, minute); 70 } 71 }); 72 73 } 74 75 //定义在EditText中显示当前日期、时间的方法 76 private void showDate(int year, int month , int day 77 , int hour , int minute) 78 { 79 EditText show = (EditText)findViewById(R.id.show); 80 show.setText("日期:" + year + "年" + month + "月" 81 + day + "日 " + hour + "时" + minute + "分"); 82 } 83 }
效果图1:选择前
效果图2:选择后