diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 89724ccb34b..3b2ea1a4bae 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -103,6 +103,7 @@ import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; +import android.widget.EditText; import android.widget.ListView; import android.widget.TabWidget; @@ -1362,4 +1363,7 @@ public final class Utils extends com.android.settingslib.Utils { && volume.isMountedReadable(); } + public static void setEditTextCursorPosition(EditText editText) { + editText.setSelection(editText.getText().length()); + } } diff --git a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java index 25413fa6db5..576e6562eb5 100644 --- a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java @@ -116,6 +116,7 @@ abstract class BluetoothNameDialogFragment extends InstrumentedDialogFragment mDeviceNameView.setSelection(deviceName.length()); } mDeviceNameView.addTextChangedListener(this); + com.android.settings.Utils.setEditTextCursorPosition(mDeviceNameView); mDeviceNameView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { diff --git a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java index a76ed460585..eae2f2963b4 100755 --- a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java +++ b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java @@ -323,6 +323,7 @@ public final class DeviceProfilesSettings extends InstrumentedDialogFragment imp final EditText deviceNameField = (EditText) mRootView.findViewById(R.id.name); if (deviceNameField != null) { deviceNameField.setText(mCachedDevice.getName()); + com.android.settings.Utils.setEditTextCursorPosition(deviceNameField); } refreshProfiles(); diff --git a/src/com/android/settings/display/DensityPreference.java b/src/com/android/settings/display/DensityPreference.java index a62e6b51d8f..581a3ee444e 100644 --- a/src/com/android/settings/display/DensityPreference.java +++ b/src/com/android/settings/display/DensityPreference.java @@ -27,6 +27,7 @@ import android.widget.EditText; import com.android.settings.R; import com.android.settingslib.CustomEditTextPreference; +import com.android.settings.Utils; import com.android.settingslib.display.DisplayDensityUtils; import java.text.NumberFormat; @@ -63,6 +64,7 @@ public class DensityPreference extends CustomEditTextPreference { if (editText != null) { editText.setInputType(InputType.TYPE_CLASS_NUMBER); editText.setText(getCurrentSwDp() + ""); + Utils.setEditTextCursorPosition(editText); } } diff --git a/src/com/android/settings/sim/SimPreferenceDialog.java b/src/com/android/settings/sim/SimPreferenceDialog.java index d1957241177..2b6ebe3b2e5 100644 --- a/src/com/android/settings/sim/SimPreferenceDialog.java +++ b/src/com/android/settings/sim/SimPreferenceDialog.java @@ -40,6 +40,7 @@ import android.widget.Spinner; import android.widget.TextView; import com.android.settings.R; +import com.android.settings.Utils; public class SimPreferenceDialog extends Activity { @@ -98,13 +99,14 @@ public class SimPreferenceDialog extends Activity { EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); nameText.setText(savedInstanceState.getString(SIM_NAME)); + Utils.setEditTextCursorPosition(nameText); } private void createEditDialog(Bundle bundle) { final Resources res = mContext.getResources(); EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); nameText.setText(mSubInfoRecord.getDisplayName()); - + Utils.setEditTextCursorPosition(nameText); final Spinner tintSpinner = (Spinner) mDialogLayout.findViewById(R.id.spinner); SelectColorAdapter adapter = new SelectColorAdapter(mContext, R.layout.settings_color_picker_item, mColorStrings); @@ -154,7 +156,7 @@ public class SimPreferenceDialog extends Activity { @Override public void onClick(DialogInterface dialog, int whichButton) { final EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); - + Utils.setEditTextCursorPosition(nameText); String displayName = nameText.getText().toString(); int subId = mSubInfoRecord.getSubscriptionId(); mSubInfoRecord.setDisplayName(displayName); diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java index 26b5b0236c5..ca02c1d3866 100644 --- a/tests/robotests/src/com/android/settings/UtilsTest.java +++ b/tests/robotests/src/com/android/settings/UtilsTest.java @@ -25,6 +25,8 @@ import android.os.storage.VolumeInfo; import android.text.SpannableStringBuilder; import android.text.format.DateUtils; import android.text.style.TtsSpan; +import android.widget.EditText; +import android.widget.TextView; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.wrapper.DevicePolicyManagerWrapper; @@ -325,4 +327,15 @@ public class UtilsTest { assertThat(Utils.isProfileOrDeviceOwner(mUserManager, mDevicePolicyManager, PACKAGE_NAME)).isTrue(); } + + @Test + public void testSetEditTextCursorPosition_shouldGetExpectedEditTextLenght() { + final EditText editText = new EditText(mContext); + final CharSequence text = "test"; + editText.setText(text, TextView.BufferType.EDITABLE); + final int length = editText.getText().length(); + Utils.setEditTextCursorPosition(editText); + + assertThat(editText.getSelectionEnd()).isEqualTo(length); + } }