Android 日期控件(DatePickerDialog)与时间控件(TimePickerDialog)的使用
在Android中提供日期和时间的控件是DataPicker与TimePicker,不过这两个控件并非弹窗模式,而是直接在页面上占据一块区域,并不会自动关闭,因此不适合直接使用,实际开发中用的是已经封装好的对话框DatePickerDialog与TimePickerDialog
运行效果如下图
DatePickerDialog
DatePickerDialog相当于在AlertDialog上加载了DatePicker,用起来更简单,只需调用构造函数设置一下当前年、月、日,然后调用show方法即可弹出日期对话框,日期选择时间有监听器OnDateSetListener负责相应,在该监听实现的OnDateSet方法中,开发者能够获得用户选择的具体日期,这里需要注意的是OnDateSet方法的月份参数,该参数的起始值不是1而是0,也就是说,一月份对应的是参数0,十二月份对应的是参数11,如果实在不理解,记住这里的月份值要加1就行了
TimePickerDialog
该对话框的用法类似DatePickerDialog,不同之处主要有两个
(1) 构造函数传的是当前的小时与分钟,最后一个参数表示是否采用二十四小时进制,true表示小时的数值范围为0~23
(2) 时间选择监听器是OnTimeSetListener,对应需要实现的方法是onTimeSet,在该方法中可获得用户选好的小时和分钟
下面是两个控件的使用方法
XML代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="sxpi.com.myapplication.MainActivity"> <TextView android:id="@+id/dateText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Date" android:textSize="22sp" /> <TextView android:id="@+id/timeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Time" android:textSize="22sp" /> </LinearLayout>
程序代码
import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.icu.util.Calendar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import android.widget.TimePicker; public class MainActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener{ TextView dateText,timeText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dateText=(TextView)findViewById(R.id.dateText); timeText=(TextView)findViewById(R.id.timeText); dateText.setOnClickListener(this); timeText.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId()==R.id.dateText){ Calendar calendar=Calendar.getInstance(); DatePickerDialog dialog = new DatePickerDialog(this,this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); dialog.show(); } if (v.getId()==R.id.timeText){ Calendar calendar=Calendar.getInstance(); TimePickerDialog dialog=new TimePickerDialog(this,this, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); dialog.show(); } } @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String desc=String.format("您选择的时间是%d时%d分",hourOfDay,minute); timeText.setText(desc); } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { String desc=String.format("您选择的日期是%d年%d月%d日",year,month+1,dayOfMonth); dateText.setText(desc); } }