#android #android_edittext
Есть поле Edittext, в которое пользователь должен ввести ответ, но при этом первый введенный символ должен быть правее, чем второй. Т.е. если пользователь последовательно вводит 123, то в итоге в Edittext отобразится 321. Можно ли как-то это реализовать используя 1 поле Edittext?
Ответы
Ответ 1
Суть идеи, насколько я поняла, только в том, чтобы правильно перемещать курсор в поле editText, а именно так, чтобы после первого введенного символа курсор становился перед ним (т.е. слева). Для этого нужно написать как-то так: public class MainActivity extends AppCompatActivity implements TextWatcher{ EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); editText.addTextChangedListener(this); @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { editText.setSelection(0); } @Override public void afterTextChanged(Editable s) { } } Ну и в layout для editText соответственно указать свойство gravity right, чтобы все отвечало логике ввода текста справа-налево.Ответ 2
Используйте класс TextWatcher. Должно получиться как-то так: editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // Здесь опишем логику перестановки символа if (before > start) editText.setText(editText.getText().toString() + s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } });Ответ 3
android:textDirection="anyRtl" Поэкспериментируйте со значением этого атрибута
Комментариев нет:
Отправить комментарий