Fix keyboard input on time picker

Closes #84
pull/120/head
Alex Baker 12 years ago
parent d90da7b759
commit 77922a7aba

@ -13,6 +13,7 @@ public class TimePreference extends DialogPreference {
private int millisOfDay; private int millisOfDay;
private TimePicker picker = null; private TimePicker picker = null;
private int defaultFocusability;
public TimePreference(Context context, AttributeSet attrs) { public TimePreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
@ -24,9 +25,8 @@ public class TimePreference extends DialogPreference {
@Override @Override
public View onCreateDialogView() { public View onCreateDialogView() {
picker = new TimePicker(getContext()); picker = new TimePicker(getContext());
defaultFocusability = picker.getDescendantFocusability();
refreshPicker(); refreshPicker();
return picker; return picker;
} }
@ -42,12 +42,20 @@ public class TimePreference extends DialogPreference {
picker.setCurrentHour(dateTime.getHourOfDay()); picker.setCurrentHour(dateTime.getHourOfDay());
picker.setCurrentMinute(dateTime.getMinuteOfHour()); picker.setCurrentMinute(dateTime.getMinuteOfHour());
picker.setIs24HourView(DateFormat.is24HourFormat(getContext())); picker.setIs24HourView(DateFormat.is24HourFormat(getContext()));
if(picker.is24HourView()) {
// Disable keyboard input on time picker to avoid this:
// https://code.google.com/p/android/issues/detail?id=24387
picker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
} else {
picker.setDescendantFocusability(defaultFocusability);
}
} }
@Override @Override
public void onDialogClosed(boolean positiveResult) { public void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult); super.onDialogClosed(positiveResult);
if (positiveResult) { if (positiveResult) {
picker.clearFocus();
millisOfDay = new DateTime() millisOfDay = new DateTime()
.withMillisOfDay(0) .withMillisOfDay(0)
.withHourOfDay(picker.getCurrentHour()) .withHourOfDay(picker.getCurrentHour())

Loading…
Cancel
Save