После поиска в сети я не нашел простейшего решения.
Итак, я решил поделиться:
Вы можете использовать размышления!
Следующие интервалы использования кода составляют 10 минут, но вы можете выбрать минуты, которые вы хотите использовать в массиве DISPLAYED_MINS.
private final static String[] DISPLAYED_MINS = { "0", "10", "20", "30", "40", "50" };
private NumberPicker getMinuteSpinner(TimePicker t)
{
try
{
Field f = t.getClass().getDeclaredField("mMinuteSpinner"); // NoSuchFieldException
f.setAccessible(true);
return (NumberPicker) f.get(t); // IllegalAccessException
}
catch (Exception e)
{
Log.e("timepicker","field name has been changed, check grepcode");
return null;
}
}
при создании timepicker:
final TimePicker dpStartDate = (TimePicker) view.findViewById(R.id.dpStartDate);
NumberPicker startMinSpiner = getMinuteSpinner(dpStartDate);
if (null != startMinSpiner)
{
startMinSpiner.setMinValue(0);
startMinSpiner.setMaxValue(DISPLAYED_MINS.length - 1);
startMinSpiner.setDisplayedValues(DISPLAYED_MINS);
}
Только не забывайте, что getCurrentMinute() возвращает выбранную минуту в массиве DISPLAY_MINS. для того, чтобы получить ту же минуту:
int theTime = 0;
for (String number: DISPLAYED_MINS) {
int theNumber = Integer.parseInt(number);
if (theNumber % 5 != 0) {
theNumber = ((int)(theNumber/5)) * 5;
}
if (theNumber == dpStartDate.getCurrentMinute()) {
theTime = theNumber;
break;
}
}
rusult этого кода является то, что только количество я могу увидеть 5, может быть, я реализовал его так? – JeanBrand
вы должны увеличить его, см. Мой отредактированный ответ –
Он работает в том смысле, что пользователь может выбирать только приращения 5, но параметры в верхней и нижней частях отображаемого результата не являются шагом в 5, вы знаете, как я могу связать суммы, доступные в счетчике, только с шагом 5? – JeanBrand