Loading core/java/android/widget/DatePicker.java +44 −21 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.util.SparseArray; import android.view.LayoutInflater; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.EditorInfo; import android.widget.NumberPicker.OnValueChangeListener; import com.android.internal.R; Loading Loading @@ -81,10 +82,10 @@ public class DatePicker extends FrameLayout { private static final boolean DEFAULT_ENABLED_STATE = true; private final NumberPicker mDaySpinner; private final LinearLayout mSpinners; private final NumberPicker mDaySpinner; private final NumberPicker mMonthSpinner; private final NumberPicker mYearSpinner; Loading Loading @@ -481,16 +482,20 @@ public class DatePicker extends FrameLayout { private void reorderSpinners() { mSpinners.removeAllViews(); char[] order = DateFormat.getDateFormatOrder(getContext()); for (int i = 0; i < order.length; i++) { final int spinnerCount = order.length; for (int i = 0; i < spinnerCount; i++) { switch (order[i]) { case DateFormat.DATE: mSpinners.addView(mDaySpinner); setImeOptions(mDaySpinner, spinnerCount, i); break; case DateFormat.MONTH: mSpinners.addView(mMonthSpinner); setImeOptions(mMonthSpinner, spinnerCount, i); break; case DateFormat.YEAR: mSpinners.addView(mYearSpinner); setImeOptions(mYearSpinner, spinnerCount, i); break; default: throw new IllegalArgumentException(); Loading Loading @@ -668,6 +673,42 @@ public class DatePicker extends FrameLayout { } } /** * Sets the IME options for a spinner based on its ordering. * * @param spinner The spinner. * @param spinnerCount The total spinner count. * @param spinnerIndex The index of the given spinner. */ private void setImeOptions(NumberPicker spinner, int spinnerCount, int spinnerIndex) { final int imeOptions; if (spinnerIndex < spinnerCount - 1) { imeOptions = EditorInfo.IME_ACTION_NEXT; } else { imeOptions = EditorInfo.IME_ACTION_DONE; } TextView input = (TextView) spinner.findViewById(R.id.numberpicker_input); input.setImeOptions(imeOptions); } private void setContentDescriptions() { // Day String text = mContext.getString(R.string.date_picker_increment_day_button); mDaySpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_day_button); mDaySpinner.findViewById(R.id.decrement).setContentDescription(text); // Month text = mContext.getString(R.string.date_picker_increment_month_button); mMonthSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_month_button); mMonthSpinner.findViewById(R.id.decrement).setContentDescription(text); // Year text = mContext.getString(R.string.date_picker_increment_year_button); mYearSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_year_button); mYearSpinner.findViewById(R.id.decrement).setContentDescription(text); } /** * Class for managing state storing/restoring. */ Loading Loading @@ -720,22 +761,4 @@ public class DatePicker extends FrameLayout { } }; } private void setContentDescriptions() { // Day String text = mContext.getString(R.string.date_picker_increment_day_button); mDaySpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_day_button); mDaySpinner.findViewById(R.id.decrement).setContentDescription(text); // Month text = mContext.getString(R.string.date_picker_increment_month_button); mMonthSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_month_button); mMonthSpinner.findViewById(R.id.decrement).setContentDescription(text); // Year text = mContext.getString(R.string.date_picker_increment_year_button); mYearSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_year_button); mYearSpinner.findViewById(R.id.decrement).setContentDescription(text); } } core/java/android/widget/NumberPicker.java +4 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Paint.Align; import android.graphics.drawable.Drawable; import android.os.SystemClock; import android.text.InputFilter; import android.text.InputType; import android.text.Spanned; Loading Loading @@ -517,7 +516,10 @@ public class NumberPicker extends LinearLayout { mInputText = (EditText) findViewById(R.id.numberpicker_input); mInputText.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { if (hasFocus) { mInputText.selectAll(); } else { mInputText.setSelection(0, 0); validateInputTextView(v); } } Loading Loading @@ -687,7 +689,6 @@ public class NumberPicker extends LinearLayout { InputMethodManager imm = (InputMethodManager) getContext().getSystemService( Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mInputText, 0); mInputText.setSelection(0, mInputText.getText().length()); return true; } VelocityTracker velocityTracker = mVelocityTracker; Loading core/java/android/widget/TextView.java +7 −6 Original line number Diff line number Diff line Loading @@ -3726,9 +3726,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // instead turning this into the normal enter key codes that an // app may be expecting. if (actionCode == EditorInfo.IME_ACTION_NEXT) { View v = focusSearch(FOCUS_DOWN); View v = focusSearch(FOCUS_FORWARD); if (v != null) { if (!v.requestFocus(FOCUS_DOWN)) { if (!v.requestFocus(FOCUS_FORWARD)) { throw new IllegalStateException("focus search returned a view " + "that wasn't able to take focus!"); } Loading @@ -3736,9 +3736,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return; } else if (actionCode == EditorInfo.IME_ACTION_PREVIOUS) { View v = focusSearch(FOCUS_UP); View v = focusSearch(FOCUS_BACKWARD); if (v != null) { if (!v.requestFocus(FOCUS_UP)) { if (!v.requestFocus(FOCUS_BACKWARD)) { throw new IllegalStateException("focus search returned a view " + "that wasn't able to take focus!"); } Loading @@ -3750,6 +3750,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (imm != null && imm.isActive(this)) { imm.hideSoftInputFromWindow(getWindowToken(), 0); } clearFocus(); return; } } Loading core/java/android/widget/TimePicker.java +9 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package android.widget; import com.android.internal.R; import android.annotation.Widget; import android.content.Context; import android.content.res.Configuration; Loading @@ -30,8 +28,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.EditorInfo; import android.widget.NumberPicker.OnValueChangeListener; import com.android.internal.R; import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.Locale; Loading Loading @@ -149,6 +150,8 @@ public class TimePicker extends FrameLayout { onTimeChanged(); } }); EditText hourInput = (EditText) mHourSpinner.findViewById(R.id.numberpicker_input); hourInput.setImeOptions(EditorInfo.IME_ACTION_NEXT); // divider (only for the new widget style) mDivider = (TextView) findViewById(R.id.divider); Loading Loading @@ -184,6 +187,8 @@ public class TimePicker extends FrameLayout { onTimeChanged(); } }); EditText minuteInput = (EditText) mMinuteSpinner.findViewById(R.id.numberpicker_input); minuteInput.setImeOptions(EditorInfo.IME_ACTION_NEXT); /* Get the localized am/pm strings and use them in the spinner */ mAmPmStrings = new DateFormatSymbols().getAmPmStrings(); Loading Loading @@ -214,6 +219,8 @@ public class TimePicker extends FrameLayout { } }); } EditText amPmInput = (EditText) mAmPmSpinner.findViewById(R.id.numberpicker_input); amPmInput.setImeOptions(EditorInfo.IME_ACTION_DONE); // update controls to initial state updateHourControl(); Loading Loading
core/java/android/widget/DatePicker.java +44 −21 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.util.SparseArray; import android.view.LayoutInflater; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.EditorInfo; import android.widget.NumberPicker.OnValueChangeListener; import com.android.internal.R; Loading Loading @@ -81,10 +82,10 @@ public class DatePicker extends FrameLayout { private static final boolean DEFAULT_ENABLED_STATE = true; private final NumberPicker mDaySpinner; private final LinearLayout mSpinners; private final NumberPicker mDaySpinner; private final NumberPicker mMonthSpinner; private final NumberPicker mYearSpinner; Loading Loading @@ -481,16 +482,20 @@ public class DatePicker extends FrameLayout { private void reorderSpinners() { mSpinners.removeAllViews(); char[] order = DateFormat.getDateFormatOrder(getContext()); for (int i = 0; i < order.length; i++) { final int spinnerCount = order.length; for (int i = 0; i < spinnerCount; i++) { switch (order[i]) { case DateFormat.DATE: mSpinners.addView(mDaySpinner); setImeOptions(mDaySpinner, spinnerCount, i); break; case DateFormat.MONTH: mSpinners.addView(mMonthSpinner); setImeOptions(mMonthSpinner, spinnerCount, i); break; case DateFormat.YEAR: mSpinners.addView(mYearSpinner); setImeOptions(mYearSpinner, spinnerCount, i); break; default: throw new IllegalArgumentException(); Loading Loading @@ -668,6 +673,42 @@ public class DatePicker extends FrameLayout { } } /** * Sets the IME options for a spinner based on its ordering. * * @param spinner The spinner. * @param spinnerCount The total spinner count. * @param spinnerIndex The index of the given spinner. */ private void setImeOptions(NumberPicker spinner, int spinnerCount, int spinnerIndex) { final int imeOptions; if (spinnerIndex < spinnerCount - 1) { imeOptions = EditorInfo.IME_ACTION_NEXT; } else { imeOptions = EditorInfo.IME_ACTION_DONE; } TextView input = (TextView) spinner.findViewById(R.id.numberpicker_input); input.setImeOptions(imeOptions); } private void setContentDescriptions() { // Day String text = mContext.getString(R.string.date_picker_increment_day_button); mDaySpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_day_button); mDaySpinner.findViewById(R.id.decrement).setContentDescription(text); // Month text = mContext.getString(R.string.date_picker_increment_month_button); mMonthSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_month_button); mMonthSpinner.findViewById(R.id.decrement).setContentDescription(text); // Year text = mContext.getString(R.string.date_picker_increment_year_button); mYearSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_year_button); mYearSpinner.findViewById(R.id.decrement).setContentDescription(text); } /** * Class for managing state storing/restoring. */ Loading Loading @@ -720,22 +761,4 @@ public class DatePicker extends FrameLayout { } }; } private void setContentDescriptions() { // Day String text = mContext.getString(R.string.date_picker_increment_day_button); mDaySpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_day_button); mDaySpinner.findViewById(R.id.decrement).setContentDescription(text); // Month text = mContext.getString(R.string.date_picker_increment_month_button); mMonthSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_month_button); mMonthSpinner.findViewById(R.id.decrement).setContentDescription(text); // Year text = mContext.getString(R.string.date_picker_increment_year_button); mYearSpinner.findViewById(R.id.increment).setContentDescription(text); text = mContext.getString(R.string.date_picker_decrement_year_button); mYearSpinner.findViewById(R.id.decrement).setContentDescription(text); } }
core/java/android/widget/NumberPicker.java +4 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Paint.Align; import android.graphics.drawable.Drawable; import android.os.SystemClock; import android.text.InputFilter; import android.text.InputType; import android.text.Spanned; Loading Loading @@ -517,7 +516,10 @@ public class NumberPicker extends LinearLayout { mInputText = (EditText) findViewById(R.id.numberpicker_input); mInputText.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { if (hasFocus) { mInputText.selectAll(); } else { mInputText.setSelection(0, 0); validateInputTextView(v); } } Loading Loading @@ -687,7 +689,6 @@ public class NumberPicker extends LinearLayout { InputMethodManager imm = (InputMethodManager) getContext().getSystemService( Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mInputText, 0); mInputText.setSelection(0, mInputText.getText().length()); return true; } VelocityTracker velocityTracker = mVelocityTracker; Loading
core/java/android/widget/TextView.java +7 −6 Original line number Diff line number Diff line Loading @@ -3726,9 +3726,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // instead turning this into the normal enter key codes that an // app may be expecting. if (actionCode == EditorInfo.IME_ACTION_NEXT) { View v = focusSearch(FOCUS_DOWN); View v = focusSearch(FOCUS_FORWARD); if (v != null) { if (!v.requestFocus(FOCUS_DOWN)) { if (!v.requestFocus(FOCUS_FORWARD)) { throw new IllegalStateException("focus search returned a view " + "that wasn't able to take focus!"); } Loading @@ -3736,9 +3736,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return; } else if (actionCode == EditorInfo.IME_ACTION_PREVIOUS) { View v = focusSearch(FOCUS_UP); View v = focusSearch(FOCUS_BACKWARD); if (v != null) { if (!v.requestFocus(FOCUS_UP)) { if (!v.requestFocus(FOCUS_BACKWARD)) { throw new IllegalStateException("focus search returned a view " + "that wasn't able to take focus!"); } Loading @@ -3750,6 +3750,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (imm != null && imm.isActive(this)) { imm.hideSoftInputFromWindow(getWindowToken(), 0); } clearFocus(); return; } } Loading
core/java/android/widget/TimePicker.java +9 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package android.widget; import com.android.internal.R; import android.annotation.Widget; import android.content.Context; import android.content.res.Configuration; Loading @@ -30,8 +28,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.EditorInfo; import android.widget.NumberPicker.OnValueChangeListener; import com.android.internal.R; import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.Locale; Loading Loading @@ -149,6 +150,8 @@ public class TimePicker extends FrameLayout { onTimeChanged(); } }); EditText hourInput = (EditText) mHourSpinner.findViewById(R.id.numberpicker_input); hourInput.setImeOptions(EditorInfo.IME_ACTION_NEXT); // divider (only for the new widget style) mDivider = (TextView) findViewById(R.id.divider); Loading Loading @@ -184,6 +187,8 @@ public class TimePicker extends FrameLayout { onTimeChanged(); } }); EditText minuteInput = (EditText) mMinuteSpinner.findViewById(R.id.numberpicker_input); minuteInput.setImeOptions(EditorInfo.IME_ACTION_NEXT); /* Get the localized am/pm strings and use them in the spinner */ mAmPmStrings = new DateFormatSymbols().getAmPmStrings(); Loading Loading @@ -214,6 +219,8 @@ public class TimePicker extends FrameLayout { } }); } EditText amPmInput = (EditText) mAmPmSpinner.findViewById(R.id.numberpicker_input); amPmInput.setImeOptions(EditorInfo.IME_ACTION_DONE); // update controls to initial state updateHourControl(); Loading