1, 在android开发的应用程序中,通常会有对时间和日期选择的需求,而把日期和时间以对话框的形式显现出来既不会占用屏幕的太多的空间,又看起来很协调。DatePickerDialog和TimePickerDialog是Android提供的可以弹出一个日期、时间选择的对话框,我们可以在程序中通过实例化DatePickerDialog和TimePickerDialog来得到一个日期、时间对话框,用来实现对时间、日期的选择。
2,下面通过一个实例来讲解日期/时间选择对话框(DatePickerDialog和TimePickerDialog)的使用,下面先看实例效果:
a,未选择前:
b,日期选择器:
c,时间选择器:
3,下面给出具体的实现代码,首先创建一个布局文件main.xml:
<span style="font-size:18px;"><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:orientation="vertical" >
<EditText
android:id="@+id/edit"
android:layout_width="200dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="日期选择器" />
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="时间选择器" />
</LinearLayout></span>
4,java类中的代码:
<span style="font-size:18px;">public class MainActivity extends Activity {
// 实例化控件
private Button dateButton;
private Button timeButton;
private EditText editText;
private DatePickerDialog dateDialog;
private TimePickerDialog timeDialog;
private int year, monthOfYear, dayOfMonth, hourOfDay, minute;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 通过findViewById找到控件
dateButton = (Button) findViewById(R.id.button1);
timeButton = (Button) findViewById(R.id.button2);
editText = (EditText) findViewById(R.id.edit);
// 通过Calendar对象来获取年、月、日、时、分的信息
Calendar calendar = Calendar.getInstance();
year = calendar.get(calendar.YEAR);
monthOfYear = calendar.get(calendar.MONTH);
dayOfMonth = calendar.get(calendar.DAY_OF_MONTH);
hourOfDay = calendar.get(calendar.HOUR_OF_DAY);
minute = calendar.get(calendar.MINUTE);
/*
* 实例化DatePickerDialog
*/
dateDialog = new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int monthOfYear,
int dayOfMonth) {
// 把获取的日期显示在文本框内,月份从0开始计数,所以要加1
String text = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
editText.setText(text);
}
}, year, monthOfYear, dayOfMonth); // 后面的三个参数对应于上面的年、月、日
/**
* 对日期选择器按钮设置监听事件
*/
dateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 点击日期选择器按钮时显示出日期对话框
dateDialog.show();
}
});
/*
* 实例化TimePickerDialog
*/
timeDialog = new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, hourOfDay + ":" + minute,
Toast.LENGTH_LONG).show();
}
}, hourOfDay, minute, true); // 最后一个参数设置是否为24小时制
/**
* 对时间选择器按钮设置监听事件
*/
timeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 点击时间选择器按钮时显示出时间对话框
timeDialog.show();
}
});
}
}</span>
5,注意: 实例化DatePickerDialog和TimePickerDialog过程中,对其设置监听事件时(第二个参数)需手动导包,导包的快捷键是Ctrl+Shift+O.