Created focus grabber for time input field

This commit is contained in:
Phillip Hsu 2016-07-16 04:27:49 -07:00
parent a6c8076255
commit 0a7c007da4
4 changed files with 15 additions and 3 deletions

View File

@ -66,7 +66,7 @@ public abstract class GridLayoutNumpad extends GridLayout implements View.OnClic
/** /**
* @return the number of digits we can input * @return the number of digits we can input
*/ */
protected abstract int capacity(); public abstract int capacity();
/** /**
* @return the layout resource that defines the children for this numpad * @return the layout resource that defines the children for this numpad
@ -102,7 +102,7 @@ public abstract class GridLayoutNumpad extends GridLayout implements View.OnClic
/** /**
* @return the number of digits inputted * @return the number of digits inputted
*/ */
protected final int count() { public final int count() {
return mCount; return mCount;
} }

View File

@ -65,7 +65,7 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
} }
@Override @Override
protected int capacity() { public int capacity() {
return MAX_DIGITS; return MAX_DIGITS;
} }

View File

@ -44,6 +44,7 @@ public class NumpadTimePickerDialog extends DialogFragment implements NumpadTime
// Don't need to keep a reference to the dismiss ImageButton // Don't need to keep a reference to the dismiss ImageButton
@Bind(R.id.input_time) EditText mInputField; @Bind(R.id.input_time) EditText mInputField;
@Bind(R.id.number_grid) NumpadTimePicker mNumpad; @Bind(R.id.number_grid) NumpadTimePicker mNumpad;
@Bind(R.id.focus_grabber) View mFocusGrabber;
public NumpadTimePickerDialog() { public NumpadTimePickerDialog() {
// Empty constructor required for dialog fragment. // Empty constructor required for dialog fragment.
@ -156,5 +157,8 @@ public class NumpadTimePickerDialog extends DialogFragment implements NumpadTime
mInputField.setText(inputText); mInputField.setText(inputText);
// Move the cursor // Move the cursor
mInputField.setSelection(mInputField.length()); mInputField.setSelection(mInputField.length());
if (mNumpad.count() == mNumpad.capacity()) {
mFocusGrabber.requestFocus();
}
} }
} }

View File

@ -38,6 +38,14 @@
android:background="@android:color/transparent" android:background="@android:color/transparent"
style="@style/TextAppearance.AppCompat.Inverse"/> style="@style/TextAppearance.AppCompat.Inverse"/>
<!-- We need both focusable attrs for requestFocus() to succeed -->
<View
android:id="@+id/focus_grabber"
android:layout_width="0dp"
android:layout_height="0dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
<!-- TOneverDO: Before the EditText, because we need this on top --> <!-- TOneverDO: Before the EditText, because we need this on top -->
<ImageButton <ImageButton
android:id="@+id/cancel" android:id="@+id/cancel"