本章記錄日期與時間選擇器各自對應的兩種實作方式:隐式/顯式,隐式為未點選時隐藏,顯式為始終占用。
一、日期選擇器
1.1 顯式:使用DatePicker
①布局頁面為DatePicker+Button
android:id="@+id/dp_dickdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:id="@+id/btn_yesdate"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="确定"
android:gravity="center"
android:textSize="20sp"/>
②控件的綁定
dp_dickdate = (DatePicker)findViewById(R.id.dp_dickdate);
findViewById(R.id.btn_yesdate).setOnClickListener(this);
③點選後直接使用其對應的方法getYear()、getMonth()、getDayOfMonth()即可
String desc = String.format("選中日期%d年%d月%d日",dp_dickdate.getYear(),dp_dickdate.getMonth()+1,dp_dickdate.getDayOfMonth());
tv_disdate.setText(desc);
④實作效果
1.2 隐式:使用Calendar
①布局頁面隻用一個按鈕
android:id="@+id/btn_chooseDate"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="選擇日期"
android:gravity="center"
android:textSize="20sp"/>
②頁面代碼需要實作接口implementsDatePickerDialog.OnDateSetListener,并實作函數onDateSet
public void onDateSet(DatePicker dp,int year,int month,int day){
String desc = String.format("選中日期%d年%d月%d日",year,month+1,day);
tv_disdate.setText(desc);
}
③在點選按鈕後響應如下:
if(view.getId()==R.id.btn_chooseDate){
//擷取執行個體,包含目前年月日
Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(this,this,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MARCH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
④實作效果
二、時間選擇器
2.1 顯式:使用TimePicker
①布局頁面為TimePicker+Button
android:id="@+id/tp_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:id="@+id/btn_yestime"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="20sp"
android:text="确定"
android:gravity="center"/>
②控件綁定
btn_yestime = (Button)findViewById(R.id.btn_yestime);
tp_time = (TimePicker)findViewById(R.id.tp_time);
btn_yestime.setOnClickListener(this);
③确認選擇後顯示時間
if(view.getId()==R.id.btn_yestime){
String desc = String.format("選擇時間%d時%d分",tp_time.getCurrentHour(),tp_time.getCurrentMinute());
tv_distime.setText(desc);
}
④實作效果
2.2 隐式:使用Calendar
①頁面布局也隻用一個按鈕
android:id="@+id/btn_choosetime"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="選擇時間"
android:textSize="20sp"/>
②同樣,要實作接口TimePickerDialog.OnTimeSetListener的onTimeSet函數
public void onTimeSet(TimePicker tp,int hour,int minute){
String desc = String.format("您選擇%d時%d分",hour,minute);
tv_distime.setText(desc);
}
③點選按鈕後響應事件
if(view.getId()==R.id.btn_choosetime){
Calendar calendar = Calendar.getInstance();
TimePickerDialog dialog = new TimePickerDialog(this,this,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
true);
dialog.show();
}
④實作效果