Hi,
Can I control the Android TimePicker view to just show the minutes to 15 minutes interval?
Meaning if it's 12:28 now, show 12:30 and clicking the + and - button will increment and decrement by 15?
Thank you,
Tee
Hi,
Can I control the Android TimePicker view to just show the minutes to 15 minutes interval?
Meaning if it's 12:28 now, show 12:30 and clicking the + and - button will increment and decrement by 15?
Thank you,
Tee
You have to write your own TimePicker. Not sure if you can extend the existing TimePicker and handle the button events on your own.
Hi,
I think I figured it out. Might be ghetto way but...
Here is what I did.
start_time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(hourOfDay, minute);
}
});
private void updateDisplay(int hourOfDay, int minute) { // do calculation of next time // nextTime = calculation of next time;
// the processed boolean is to prevent infinite loop
if (!processed) {
start_time.setCurrentMinute(nextTime);
processed = true;
} else {
processed = false;
}
}
The following worked for me.
First, in onCreate:
pickStartTime = (TimePicker)findViewById(R.id.StartTime);
pickStartTime.setOnTimeChangedListener(mStartTimeChangedListener);
Set the OnTimeChangedListener:
private TimePicker.OnTimeChangedListener mStartTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(view, startDate, hourOfDay, minute);
}
};
Null OnTimeChangedListener (explained in comments in updateDisplay below):
private TimePicker.OnTimeChangedListener mNullTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
};
private void updateDisplay(TimePicker timePicker, Date date, int hourOfDay, int minute) {
// do calculation of next time
int nextMinute = 0;
if (minute >= 45 && minute <= 59)
nextMinute = 45;
else if(minute >= 30)
nextMinute = 30;
else if(minute >= 15)
nextMinute = 15;
else if(minute > 0)
nextMinute = 0;
else {
nextMinute = 45;
}
// remove ontimechangedlistener to prevent stackoverflow/infinite loop
timePicker.setOnTimeChangedListener(mNullTimeChangedListener);
// set minute
timePicker.setCurrentMinute(nextMinute);
// hook up ontimechangedlistener again
timePicker.setOnTimeChangedListener(mStartTimeChangedListener);
// update the date variable for use elsewhere in code
date.setMinutes(nextMinute);
}