diff options
| author | David Ogutu <ogutu@google.com> | 2018-03-15 11:36:30 -0400 |
|---|---|---|
| committer | David Ogutu <ogutu@google.com> | 2018-03-21 11:26:09 -0400 |
| commit | 07b2bb7f2f9b82e5dcfd329206f71969c2d9fe08 (patch) | |
| tree | afa9428b542d22b4e96279ab2ea1e0638415fb3b /core/java/android/widget/TextInputTimePickerView.java | |
| parent | 1d748402a9c3d59d697c3a9c1fb06cbccf293d71 (diff) | |
Show hint instead of auto-populating timepicker.
Textboxes will now show hint text if not set rather than populating
text. Also changed validation text to have similar behaviour to the
radial setter.
Change-Id: I8ce55d7d7898be9b0a842d3f1f9a2e8deb01f5b3
Test: manually https://drive.google.com/file/d/1bD_dbIF9dgOr1B3EuSMBlJY9M97Z19vc/view?usp=sharing
Fixes: 36863667
Diffstat (limited to 'core/java/android/widget/TextInputTimePickerView.java')
| -rw-r--r-- | core/java/android/widget/TextInputTimePickerView.java | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/core/java/android/widget/TextInputTimePickerView.java b/core/java/android/widget/TextInputTimePickerView.java index 9f905d164e8e..23f258284efa 100644 --- a/core/java/android/widget/TextInputTimePickerView.java +++ b/core/java/android/widget/TextInputTimePickerView.java @@ -20,6 +20,7 @@ import android.content.Context; import android.os.LocaleList; import android.text.Editable; import android.text.InputFilter; +import android.text.TextUtils; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.MathUtils; @@ -55,6 +56,7 @@ public class TextInputTimePickerView extends RelativeLayout { private OnValueTypedListener mListener; private boolean mErrorShowing; + private boolean mTimeSet; interface OnValueTypedListener { void onValueChanged(int inputType, int newValue); @@ -155,8 +157,15 @@ public class TextInputTimePickerView extends RelativeLayout { } boolean validateInput() { - final boolean inputValid = parseAndSetHourInternal(mHourEditText.getText().toString()) - && parseAndSetMinuteInternal(mMinuteEditText.getText().toString()); + final String hourText = TextUtils.isEmpty(mHourEditText.getText()) + ? mHourEditText.getHint().toString() + : mHourEditText.getText().toString(); + final String minuteText = TextUtils.isEmpty(mMinuteEditText.getText()) + ? mMinuteEditText.getHint().toString() + : mMinuteEditText.getText().toString(); + + final boolean inputValid = parseAndSetHourInternal(hourText) + && parseAndSetMinuteInternal(minuteText); setError(!inputValid); return inputValid; } @@ -173,6 +182,14 @@ public class TextInputTimePickerView extends RelativeLayout { mMinuteLabel.setVisibility(enabled ? View.INVISIBLE : View.VISIBLE); } + private void setTimeSet(boolean timeSet) { + mTimeSet = mTimeSet || timeSet; + } + + private boolean isTimeSet() { + return mTimeSet; + } + /** * Computes the display value and updates the text of the view. * <p> @@ -195,8 +212,14 @@ public class TextInputTimePickerView extends RelativeLayout { mAmPmSpinner.setSelection(1); } - mHourEditText.setText(String.format(hourFormat, localizedHour)); - mMinuteEditText.setText(String.format(minuteFormat, minute)); + if (isTimeSet()) { + mHourEditText.setText(String.format(hourFormat, localizedHour)); + mMinuteEditText.setText(String.format(minuteFormat, minute)); + } else { + mHourEditText.setHint(String.format(hourFormat, localizedHour)); + mMinuteEditText.setHint(String.format(minuteFormat, minute)); + } + if (mErrorShowing) { validateInput(); @@ -214,6 +237,7 @@ public class TextInputTimePickerView extends RelativeLayout { return false; } mListener.onValueChanged(HOURS, getHourOfDayFromLocalizedHour(hour)); + setTimeSet(true); return true; } catch (NumberFormatException e) { // Do nothing since we cannot parse the input. @@ -229,6 +253,7 @@ public class TextInputTimePickerView extends RelativeLayout { return false; } mListener.onValueChanged(MINUTES, minutes); + setTimeSet(true); return true; } catch (NumberFormatException e) { // Do nothing since we cannot parse the input. |
