Settings: Correctly align cursor in Settings

Steps to Reproduce:
- Click on Density Settings (DPI Settings) / Renaming BT Device / Renaming SIM Settings
- EditText Dialog pops up
- The cursor is at the leftmost side of the text
- Logically Cursor should be at rightmost side which can be aligned grabbing text length

Screenshots:
Before:
http://imgur.com/a/o4vkr
http://imgur.com/a/6Qext

After:
http://imgur.com/a/fuxqT
http://imgur.com/a/vm2WX

Bug: 65185652
Test: RunSettingsRoboTests: OK (47 tests)

Change-Id: Id00308e7e019434edad4afab56cf4719be0d0d54
Signed-off-by: PMS22 <prathams99@rediff.com>
This commit is contained in:
PMS22
2017-06-14 07:10:15 +00:00
committed by Doris Ling
parent 3e6488448c
commit 63a0560a6c
6 changed files with 25 additions and 2 deletions

View File

@@ -103,6 +103,7 @@ import android.view.ViewGroup;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener; import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TabWidget; import android.widget.TabWidget;
@@ -1362,4 +1363,7 @@ public final class Utils extends com.android.settingslib.Utils {
&& volume.isMountedReadable(); && volume.isMountedReadable();
} }
public static void setEditTextCursorPosition(EditText editText) {
editText.setSelection(editText.getText().length());
}
} }

View File

@@ -116,6 +116,7 @@ abstract class BluetoothNameDialogFragment extends InstrumentedDialogFragment
mDeviceNameView.setSelection(deviceName.length()); mDeviceNameView.setSelection(deviceName.length());
} }
mDeviceNameView.addTextChangedListener(this); mDeviceNameView.addTextChangedListener(this);
com.android.settings.Utils.setEditTextCursorPosition(mDeviceNameView);
mDeviceNameView.setOnEditorActionListener(new TextView.OnEditorActionListener() { mDeviceNameView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override @Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

View File

@@ -323,6 +323,7 @@ public final class DeviceProfilesSettings extends InstrumentedDialogFragment imp
final EditText deviceNameField = (EditText) mRootView.findViewById(R.id.name); final EditText deviceNameField = (EditText) mRootView.findViewById(R.id.name);
if (deviceNameField != null) { if (deviceNameField != null) {
deviceNameField.setText(mCachedDevice.getName()); deviceNameField.setText(mCachedDevice.getName());
com.android.settings.Utils.setEditTextCursorPosition(deviceNameField);
} }
refreshProfiles(); refreshProfiles();

View File

@@ -27,6 +27,7 @@ import android.widget.EditText;
import com.android.settings.R; import com.android.settings.R;
import com.android.settingslib.CustomEditTextPreference; import com.android.settingslib.CustomEditTextPreference;
import com.android.settings.Utils;
import com.android.settingslib.display.DisplayDensityUtils; import com.android.settingslib.display.DisplayDensityUtils;
import java.text.NumberFormat; import java.text.NumberFormat;
@@ -63,6 +64,7 @@ public class DensityPreference extends CustomEditTextPreference {
if (editText != null) { if (editText != null) {
editText.setInputType(InputType.TYPE_CLASS_NUMBER); editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setText(getCurrentSwDp() + ""); editText.setText(getCurrentSwDp() + "");
Utils.setEditTextCursorPosition(editText);
} }
} }

View File

@@ -40,6 +40,7 @@ import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
public class SimPreferenceDialog extends Activity { public class SimPreferenceDialog extends Activity {
@@ -98,13 +99,14 @@ public class SimPreferenceDialog extends Activity {
EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
nameText.setText(savedInstanceState.getString(SIM_NAME)); nameText.setText(savedInstanceState.getString(SIM_NAME));
Utils.setEditTextCursorPosition(nameText);
} }
private void createEditDialog(Bundle bundle) { private void createEditDialog(Bundle bundle) {
final Resources res = mContext.getResources(); final Resources res = mContext.getResources();
EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
nameText.setText(mSubInfoRecord.getDisplayName()); nameText.setText(mSubInfoRecord.getDisplayName());
Utils.setEditTextCursorPosition(nameText);
final Spinner tintSpinner = (Spinner) mDialogLayout.findViewById(R.id.spinner); final Spinner tintSpinner = (Spinner) mDialogLayout.findViewById(R.id.spinner);
SelectColorAdapter adapter = new SelectColorAdapter(mContext, SelectColorAdapter adapter = new SelectColorAdapter(mContext,
R.layout.settings_color_picker_item, mColorStrings); R.layout.settings_color_picker_item, mColorStrings);
@@ -154,7 +156,7 @@ public class SimPreferenceDialog extends Activity {
@Override @Override
public void onClick(DialogInterface dialog, int whichButton) { public void onClick(DialogInterface dialog, int whichButton) {
final EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name); final EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
Utils.setEditTextCursorPosition(nameText);
String displayName = nameText.getText().toString(); String displayName = nameText.getText().toString();
int subId = mSubInfoRecord.getSubscriptionId(); int subId = mSubInfoRecord.getSubscriptionId();
mSubInfoRecord.setDisplayName(displayName); mSubInfoRecord.setDisplayName(displayName);

View File

@@ -25,6 +25,8 @@ import android.os.storage.VolumeInfo;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.text.style.TtsSpan; import android.text.style.TtsSpan;
import android.widget.EditText;
import android.widget.TextView;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.DevicePolicyManagerWrapper; import com.android.settings.wrapper.DevicePolicyManagerWrapper;
@@ -325,4 +327,15 @@ public class UtilsTest {
assertThat(Utils.isProfileOrDeviceOwner(mUserManager, mDevicePolicyManager, assertThat(Utils.isProfileOrDeviceOwner(mUserManager, mDevicePolicyManager,
PACKAGE_NAME)).isTrue(); 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);
}
} }