DatePicker 和TimePicker 可以在当前的界面中实现日期和时间的选择。
使用方法如下:
1. 在布局添加DatePicker 和TimePicker
这个没什么好说的
<DatePicker android:id="@+id/datePicker1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TimePicker android:id="@+id/timePicker1" android:layout_width="match_parent" android:layout_height="wrap_content" />
2. 初始化各类控件
public class MainActivity extends Activity { private DatePicker datePicker; private TimePicker timePicker; ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datePicker = (DatePicker)findViewById(R.id.datePicker1); timePicker = (TimePicker)findViewById(R.id.timePicker1); ... }
3. 注册监听事件
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... datePicker.init(year, month, day, new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { ... } }); timePicker.setOnTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { ... } }); }
注册DatePicker 用到了init()方法void init(int year, int monthOfYear, int dayOfMonth, OnDateChangedListener onDateChangedListener)
它的前三个参数用来传递当前显示的年月日,最后一个参数是对应的监听器。
timePicker 用setOnTimeChangedListener() 函数注册监听器。
完整示例代码:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.datetimepickerdemo.MainActivity" >
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
private DatePicker datePicker;
private TimePicker timePicker;
private Calendar calendar;
private int year;
private int month;
private int day;
private int hour;
private int min;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker = (DatePicker)findViewById(R.id.datePicker1);
timePicker = (TimePicker)findViewById(R.id.timePicker1);
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
min = calendar.get(Calendar.MINUTE);
setTitle(year + "-" + (month + 1) + "-" + day + " " + hour + ":" + min);
datePicker.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
});
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay + ":" + minute);
}
});
}
}
上面代码中的Calendar 类用于获取当前系统时间。setTitle()方法用来设置标题,它接收一个String 类型的参数。
效果如下: