Android 中的自定义时间选择器
Custom time picker in Android
我有显示时间选择器对话框的代码,并且我制作了过滤器 setMinTime 和 setMaxTime,但我想过滤得更详细。
我如何为今天和其他日期时间选择器制作过滤器?
过滤今天:
timepickerdialog.setMinTime(now.get(Calendar.HOUR_OF_DAY), 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
过滤其他日期:
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
完整代码:
public void timePicker(){
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}
首先,您需要检查 DatePicker 中选择的日期是否为今天,并将今天的日期布尔标志发送到 timePicker
方法,如下所示:
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(Calendar.YEAR,year);
selectedDate.set(Calendar.MONTH,monthOfYear);
selectedDate.set(Calendar.DAY_OF_MONTH,dayOfMonth);
openTimePicker(DateUtils.isToday(selectedDate.getTimeInMillis()));
}
}, Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH),Calendar.getInstance().get(Calendar.DAY_OF_MONTH)).show();
将今天的日期布尔标志参数用于 timePicker
方法,如下所示设置最小和最大时间:
public void timePicker(boolean isTodayDate){
int minHour = 8;
int maxHour = 16;
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
if(isTodayDate){
if(now.get(Calendar.HOUR_OF_DAY)>8 && now.get(Calendar.HOUR_OF_DAY)<16){
minHour = now.get(Calendar.HOUR_OF_DAY);
}
}
timepickerdialog.setMinTime(minHour, 0, 0);
timepickerdialog.setMaxTime(maxHour, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}
我有显示时间选择器对话框的代码,并且我制作了过滤器 setMinTime 和 setMaxTime,但我想过滤得更详细。 我如何为今天和其他日期时间选择器制作过滤器?
过滤今天:
timepickerdialog.setMinTime(now.get(Calendar.HOUR_OF_DAY), 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
过滤其他日期:
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
完整代码:
public void timePicker(){
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}
首先,您需要检查 DatePicker 中选择的日期是否为今天,并将今天的日期布尔标志发送到 timePicker
方法,如下所示:
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(Calendar.YEAR,year);
selectedDate.set(Calendar.MONTH,monthOfYear);
selectedDate.set(Calendar.DAY_OF_MONTH,dayOfMonth);
openTimePicker(DateUtils.isToday(selectedDate.getTimeInMillis()));
}
}, Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH),Calendar.getInstance().get(Calendar.DAY_OF_MONTH)).show();
将今天的日期布尔标志参数用于 timePicker
方法,如下所示设置最小和最大时间:
public void timePicker(boolean isTodayDate){
int minHour = 8;
int maxHour = 16;
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
if(isTodayDate){
if(now.get(Calendar.HOUR_OF_DAY)>8 && now.get(Calendar.HOUR_OF_DAY)<16){
minHour = now.get(Calendar.HOUR_OF_DAY);
}
}
timepickerdialog.setMinTime(minHour, 0, 0);
timepickerdialog.setMaxTime(maxHour, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}