Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Как реализовать в Edittext ввод символов справа налево

#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" Поэкспериментируйте со значением этого атрибута

Комментариев нет:

Отправить комментарий