【发布时间】:2018-02-15 06:48:51
【问题描述】:
当我滚动分钟时,Android Timepickerdialog 会不合逻辑地更改小时。我在时间选择器对话框中将分钟间隔设置为 30 分钟,因此分钟的值为 00 和 30。例如,当我将小时设置为 00 并将分钟从 00 更改为 30 时,小时减少了一小时,所以现在是23:30,我想应该是 00:30。我意识到这不会发生在三星设备上,而是发生在所有其他制造商的设备上。滚动分钟时有什么方法可以禁用小时更改?
这是我的代码
public class CustomTimePickerDialog extends TimePickerDialog {
private int TIME_PICKER_INTERVAL = 30;
private TimePicker mTimePicker;
private final OnTimeSetListener mTimeSetListener;
public int interval1 = 1;
public CustomTimePickerDialog(Context context, OnTimeSetListener listener,
int hourOfDay, int minute, boolean is24HourView, int interval) {
super(context, TimePickerDialog.THEME_HOLO_LIGHT, null, hourOfDay,
minute / interval, is24HourView);
TIME_PICKER_INTERVAL = interval;
mTimeSetListener = listener;
}
@Override
public void updateTime(int hourOfDay, int minuteOfHour) {
mTimePicker.setCurrentHour(hourOfDay);
mTimePicker.setCurrentMinute(minuteOfHour / TIME_PICKER_INTERVAL);
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case BUTTON_POSITIVE:
if (mTimeSetListener != null) {
mTimeSetListener.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute() * TIME_PICKER_INTERVAL);
}
break;
case BUTTON_NEGATIVE:
cancel();
break;
}
}
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
try {
Class<?> classForid = Class.forName("com.android.internal.R$id");
Field timePickerField = classForid.getField("timePicker");
mTimePicker = (TimePicker) findViewById(timePickerField.getInt(null));
Field field = classForid.getField("minute");
NumberPicker minuteSpinner = (NumberPicker) mTimePicker
.findViewById(field.getInt(null));
minuteSpinner.setMinValue(0);
minuteSpinner.setMaxValue((60 / TIME_PICKER_INTERVAL) - 1);
List<String> displayedValues = new ArrayList<String>();
for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) {
displayedValues.add(String.format("%02d", i));
}
minuteSpinner.setDisplayedValues(displayedValues
.toArray(new String[displayedValues.size()]));
} catch (Exception e) {
e.printStackTrace();
}
}
}
我知道至少有一个类似的问题,但它没有解决问题的答案。 Android time picker auto change hours when minutes get scrolled
编辑:我还注意到,当我将分钟间隔更改为 15 时,效果很好。例如,当我将分钟数从 45 增加到 00 时,小时数会增加一。当我将分钟数从 00 减少到 45 时,同样的事情也会减少一小时。分钟间隔为 6 时也是如此。所以问题仅在于 30 分钟间隔,我的软件中必须有 30 分钟间隔。
【问题讨论】:
-
您找到解决方案了吗?
-
@CodeLikeBeaker 不,我还没有找到解决方案
标签: java android time android-timepicker timepickerdialog