Android日期时间选择器在Android应用程序中使用得很多。在本教程中,我们将演示Android应用程序中日期选择器 和** 计时器选择器** 对话框的使用。这些组件用于在定制的用户界面中选择日期和时间。我们将在Android应用程序代码中使用DatePickerDialog
和TimePickerDialog
类以及Calendar
类来实现这一点。
Android DatePickerDialog和TimePickerDialog
虽然Date Picker和Time Picker可以作为独立的控件使用,但它们在屏幕上占据了更大的空间。因此,在对话框中使用它们是更好的选择。幸运的是,Android提供了自己的DatePickerDialog和TimePickerDialog类。DatePickerDialog 和** TimePickerDialog** 类分别有onDateSetListener()
和onTimeSetListener()
回调方法。当用户分别填写完日期和时间时,将调用这些回调方法。DatePickerDialog类由一个带有下面列出的参数的5个参数构造函数组成。
1.上下文 :需要应用上下文
2.回调函数 :当用户设置日期时,调用onDateSet()
,参数如下:
- INT Year:从对话框中存储当前选择的年份
- int monthOfYear:将存储对话框中当前选择的月份
- int day OfMonth:存储对话框中当前选择的日期
4.int mYear :弹出对话框显示当前年度 5.int mMonth :弹出对话框显示可见的当月 6.int mDay :显示对话框弹出时可见的当天
TimePickerDialog类由一个带有下面列出的参数的5个参数构造函数组成。
1.上下文 :需要应用上下文
2.回调函数 :onTimeSet()
在用户设置时间时调用,参数如下:
- int hourOfDay:它将存储从对话框中选择的当前小时
- INT分钟:存储对话框中当前选择的分钟
4.int mHour :对话框弹出时显示当前小时 5.int mMinmin :显示对话框弹出的当前分钟 6.布尔值为FALSE :如果设置为FALSE,则以24小时格式显示时间,否则
Android Date Time Picker示例项目结构
Android日期时间选择器对话框项目代码
active_main.xml
由两个按钮组成,用于调用日期和时间选取器对话框并在两个EditText视图中设置用户选择的时间。下面给出了XML代码。active_main.xml
1<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
2 xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
3 android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
4 android:paddingRight="@dimen/activity_horizontal_margin"
5 android:paddingTop="@dimen/activity_vertical_margin"
6 android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
7
8 <EditText
9 android:layout_width="200dp"
10 android:layout_height="wrap_content"
11 android:id="@+id/in_date"
12 android:layout_marginTop="82dp"
13 android:layout_alignParentTop="true"
14 android:layout_alignParentLeft="true"
15 android:layout_alignParentStart="true" />
16
17 <Button
18 android:layout_width="wrap_content"
19 android:layout_height="wrap_content"
20 android:text="SELECT DATE"
21 android:id="@+id/btn_date"
22 android:layout_alignBottom="@+id/in_date"
23 android:layout_toRightOf="@+id/in_date"
24 android:layout_toEndOf="@+id/in_date" />
25
26 <EditText
27 android:layout_width="200dp"
28 android:layout_height="wrap_content"
29 android:id="@+id/in_time"
30 android:layout_below="@+id/in_date"
31 android:layout_alignParentLeft="true"
32 android:layout_alignParentStart="true" />
33
34 <Button
35 android:layout_width="wrap_content"
36 android:layout_height="wrap_content"
37 android:text="SELECT TIME"
38 android:id="@+id/btn_time"
39 android:layout_below="@+id/btn_date"
40 android:layout_alignLeft="@+id/btn_date"
41 android:layout_alignStart="@+id/btn_date" />
42
43</RelativeLayout>
MainActivity.java
类如下:
1package com.journaldev.datetimepickerdialog;
2
3import android.app.DatePickerDialog;
4import android.app.TimePickerDialog;
5import android.support.v7.app.AppCompatActivity;
6import android.os.Bundle;
7import android.view.Menu;
8import android.view.MenuItem;
9import android.view.View;
10import android.widget.Button;
11import android.widget.DatePicker;
12import android.widget.EditText;
13import android.widget.TimePicker;
14
15import java.util.Calendar;
16
17public class MainActivity extends AppCompatActivity implements
18 View.OnClickListener {
19
20 Button btnDatePicker, btnTimePicker;
21 EditText txtDate, txtTime;
22 private int mYear, mMonth, mDay, mHour, mMinute;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main);
28
29 btnDatePicker=(Button)findViewById(R.id.btn_date);
30 btnTimePicker=(Button)findViewById(R.id.btn_time);
31 txtDate=(EditText)findViewById(R.id.in_date);
32 txtTime=(EditText)findViewById(R.id.in_time);
33
34 btnDatePicker.setOnClickListener(this);
35 btnTimePicker.setOnClickListener(this);
36
37 }
38
39 @Override
40 public void onClick(View v) {
41
42 if (v == btnDatePicker) {
43
44 // Get Current Date
45 final Calendar c = Calendar.getInstance();
46 mYear = c.get(Calendar.YEAR);
47 mMonth = c.get(Calendar.MONTH);
48 mDay = c.get(Calendar.DAY_OF_MONTH);
49
50 DatePickerDialog datePickerDialog = new DatePickerDialog(this,
51 new DatePickerDialog.OnDateSetListener() {
52
53 @Override
54 public void onDateSet(DatePicker view, int year,
55 int monthOfYear, int dayOfMonth) {
56
57 txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
58
59 }
60 }, mYear, mMonth, mDay);
61 datePickerDialog.show();
62 }
63 if (v == btnTimePicker) {
64
65 // Get Current Time
66 final Calendar c = Calendar.getInstance();
67 mHour = c.get(Calendar.HOUR_OF_DAY);
68 mMinute = c.get(Calendar.MINUTE);
69
70 // Launch Time Picker Dialog
71 TimePickerDialog timePickerDialog = new TimePickerDialog(this,
72 new TimePickerDialog.OnTimeSetListener() {
73
74 @Override
75 public void onTimeSet(TimePicker view, int hourOfDay,
76 int minute) {
77
78 txtTime.setText(hourOfDay + ":" + minute);
79 }
80 }, mHour, mMinute, false);
81 timePickerDialog.show();
82 }
83 }
84}
在上面的代码中,我们使用Calendar.getInstance()
创建了一个Calendar对象,以使用各自的静态字段显示当前日期和时间。注意 :显示日历和时钟是AppCompat主题中提供的默认UI主题。下面是我们的Android日期时间选择器示例应用程序产生的输出。这结束了安卓日期时间选取器对话框示例教程。您可以通过下面的链接下载最终的** Android DateTimePickerDialog项目** 。