From 07b2bb7f2f9b82e5dcfd329206f71969c2d9fe08 Mon Sep 17 00:00:00 2001 From: David Ogutu Date: Thu, 15 Mar 2018 11:36:30 -0400 Subject: 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 --- .../android/widget/TextInputTimePickerView.java | 33 +++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'core/java/android/widget/TextInputTimePickerView.java') 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. *

@@ -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. -- cgit v1.2.3