Jea*_*and 4 android minute timepicker
我正在编写一个应用程序,用户需要在其中指定给定的时间点,但我似乎无法弄清楚如何设置用户可以选择的分钟值,只使用 5 的增量而不是 1 的增量.
简单地说,当用户滚动可用金额时,他/她只能看到 0、5、10、15 等。
先感谢您。
为确保您与 API 21+ 兼容,请确保您的 TimePicker 具有以下属性:
android:timePickerMode="spinner"
Run Code Online (Sandbox Code Playgroud)
然后这里是如何以编程方式设置间隔。如果找不到分钟字段,则此方法将使用标准 TimePicker:
private static final int INTERVAL = 5;
private static final DecimalFormat FORMATTER = new DecimalFormat("00");
private TimePicker picker; // set in onCreate
private NumberPicker minutePicker;
public void setMinutePicker() {
int numValues = 60 / INTERVAL;
String[] displayedValues = new String[numValues];
for (int i = 0; i < numValues; i++) {
displayedValues[i] = FORMATTER.format(i * INTERVAL);
}
View minute = picker.findViewById(Resources.getSystem().getIdentifier("minute", "id", "android"));
if ((minute != null) && (minute instanceof NumberPicker)) {
minutePicker = (NumberPicker) minute;
minutePicker.setMinValue(0);
minutePicker.setMaxValue(numValues - 1);
minutePicker.setDisplayedValues(displayedValues);
}
}
public int getMinute() {
if (minutePicker != null) {
return (minutePicker.getValue() * INTERVAL);
} else {
return picker.getCurrentMinute();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过编程方式执行此操作。
pickStartTime = (TimePicker)findViewById(R.id.StartTime);
pickStartTime.setOnTimeChangedListener(mStartTimeChangedListener);
int nextMinute = 0;
Run Code Online (Sandbox Code Playgroud)
接下来,设置OnTimeChangedListener如下图所示
private TimePicker.OnTimeChangedListener mStartTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(view, startDate, hourOfDay, minute);
}
};
private TimePicker.OnTimeChangedListener mNullTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {}
};
Run Code Online (Sandbox Code Playgroud)
和,
private void updateDisplay(TimePicker timePicker, Date date, int hourOfDay, int minute)
{
nextMinute = nextMinute+5;
// remove ontimechangedlistener to prevent stackoverflow/infinite loop
timePicker.setOnTimeChangedListener(mNullTimeChangedListener);
// set minute
timePicker.setCurrentMinute(nextMinute);
// look up ontimechangedlistener again
timePicker.setOnTimeChangedListener(mStartTimeChangedListener);
// update the date variable for use elsewhere in code
date.setMinutes(nextMinute);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21412 次 |
| 最近记录: |