【发布时间】:2015-11-08 17:56:15
【问题描述】:
我试图在TimePicker 中设置小时和分钟,但我发现NumberPicker 中似乎需要最少数量的项目才能环绕这些值。
如果我没有那么多值(只有 4 个:“00”、“15”、“30”和“45”),如何将项目数设置为小于默认值?
下图显示小时正确但分钟错误。我需要分钟来环绕(即“00”之前的“45”)。
这是我的代码:
@SuppressLint("NewApi")
private void setTimePickerInterval(TimePicker timePicker) {
try {
Class<?> classForid = Class.forName("com.android.internal.R$id");
Field fieldHr = classForid.getField("hour");
mHourPicker = (NumberPicker) timePicker.findViewById(fieldHr.getInt(null));
//set hours from 9am to 7pm (opening hours)
mHourPicker.setMinValue(0);
mHourPicker.setMaxValue(10);
mDisplayedValuesHr = new ArrayList<String>();
for (int i = 9; i < 20; i++) {
mDisplayedValuesHr.add(String.format("%02d", i));
}
mHourPicker.setDisplayedValues(mDisplayedValuesHr.toArray(new String[0]));
Field fieldMin = classForid.getField("minute");
mMinutePicker = (NumberPicker) timePicker.findViewById(fieldMin.getInt(null));
//set minutes in 15 mins interval
mMinutePicker.setMinValue(0);
mMinutePicker.setMaxValue(3);
mDisplayedValuesMin = new ArrayList<String>();
for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) {
mDisplayedValuesMin.add(String.format("%02d", i));
}
mMinutePicker.setDisplayedValues(mDisplayedValuesMin.toArray(new String[0]));
} catch (Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
-
请注意,这段代码会遇到实际值与显示值的问题。如需跟进,请参阅stackoverflow.com/questions/33626318/…
标签: java android timepicker numberpicker