android:TimePickerDialog 阻止用户 select 过去的时间,并且可以 select 未来的新日期
android: TimePickerDialog prevent user select past time and can select future time with new date
我正在使用这个 link Android TimePickerDialog set max time.
我是 android 的新人。在这段代码的帮助下,我不能 select 过去的时间,但我们不能 select 未来的时间。当 12 在 timepickerdialog 模式中 selected 时,根据第二天而不是过去的一天自动更改为 am。
试试这个代码:
TimePickerFragment timePickerFragment = new TimePickerFragment();
timePickerFragment.setOnTimeSetListener(new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar datetime = Calendar.getInstance();
Calendar c = Calendar.getInstance();
datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
datetime.set(Calendar.MINUTE, minute);
if (datetime.getTimeInMillis() >= c.getTimeInMillis()) {
//it's after current
int hour = hourOfDay % 12;
btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
minute, hourOfDay < 12 ? "am" : "pm"));
} else {
//it's before current'
Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show();
}
}
});
timePickerFragment.show(getSupportFragmentManager(), "TIME");
它将显示 timepicker
对话框,如果用户 select 在当前时间之前的任何时间...它将显示无效时间..
编辑
您需要导入:
import android.app.TimePickerDialog;
import android.app.Fragment;
import android.app.DialogFragment;
import java.util.Calendar;
import android.widget.TimePicker;
这是一个好东西Example
最适合您的解决方案是使用 this material 设计库来选择时间或日期并设置最小值。
TimePickerDialog tpd = TimePickerDialog.newInstance(
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
//put some interesting code
}
},
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true
);
tpd.setMinTime(10, 0, 0); // MIN: hours, minute, secconds
tpd.show(getFragmentManager(), "TimePickerDialog");
The easiest way to add the Material DateTime Picker library to your project is by adding it as a dependency to your build.gradle
dependencies {
compile 'com.wdullaer:materialdatetimepicker:3.0.0'
}
private int mHour, mMinute;
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(ActivityScheduleTransfer.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
final Calendar checkOldDate = Calendar.getInstance();
if (hourOfDay >= checkOldDate.get(Calendar.HOUR_OF_DAY)) {
if (hourOfDay == checkOldDate.get(Calendar.HOUR_OF_DAY) && minute <= checkOldDate.get(Calendar.MINUTE)) {
return;
}
//select current after
} else {`enter code here`
//select current before
}
}
}, mHour, mMinute, false);
timePickerDialog.show();
我正在使用这个 link Android TimePickerDialog set max time.
我是 android 的新人。在这段代码的帮助下,我不能 select 过去的时间,但我们不能 select 未来的时间。当 12 在 timepickerdialog 模式中 selected 时,根据第二天而不是过去的一天自动更改为 am。
试试这个代码:
TimePickerFragment timePickerFragment = new TimePickerFragment();
timePickerFragment.setOnTimeSetListener(new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar datetime = Calendar.getInstance();
Calendar c = Calendar.getInstance();
datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
datetime.set(Calendar.MINUTE, minute);
if (datetime.getTimeInMillis() >= c.getTimeInMillis()) {
//it's after current
int hour = hourOfDay % 12;
btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
minute, hourOfDay < 12 ? "am" : "pm"));
} else {
//it's before current'
Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show();
}
}
});
timePickerFragment.show(getSupportFragmentManager(), "TIME");
它将显示 timepicker
对话框,如果用户 select 在当前时间之前的任何时间...它将显示无效时间..
编辑 您需要导入:
import android.app.TimePickerDialog;
import android.app.Fragment;
import android.app.DialogFragment;
import java.util.Calendar;
import android.widget.TimePicker;
这是一个好东西Example
最适合您的解决方案是使用 this material 设计库来选择时间或日期并设置最小值。
TimePickerDialog tpd = TimePickerDialog.newInstance(
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
//put some interesting code
}
},
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true
);
tpd.setMinTime(10, 0, 0); // MIN: hours, minute, secconds
tpd.show(getFragmentManager(), "TimePickerDialog");
The easiest way to add the Material DateTime Picker library to your project is by adding it as a dependency to your build.gradle
dependencies {
compile 'com.wdullaer:materialdatetimepicker:3.0.0'
}
private int mHour, mMinute;
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(ActivityScheduleTransfer.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
final Calendar checkOldDate = Calendar.getInstance();
if (hourOfDay >= checkOldDate.get(Calendar.HOUR_OF_DAY)) {
if (hourOfDay == checkOldDate.get(Calendar.HOUR_OF_DAY) && minute <= checkOldDate.get(Calendar.MINUTE)) {
return;
}
//select current after
} else {`enter code here`
//select current before
}
}
}, mHour, mMinute, false);
timePickerDialog.show();