Замена символа в Edittext при наборе текста - PullRequest
1 голос
/ 13 января 2020

У меня есть функция, которая возвращает некоторую строку для буквы «А», когда пользователь выбирает вариант 1, и другую строку, когда пользователь выбирает вариант 2:

private String changeText(int option){
if(option==1)
    return "Y";
if(option==2)
    return "Z";
}

Я хочу заменить символ в EdittextView, когда пользователь выбирает опцию 1 и вводит «A», заменяет A на «Y» и то же самое для варианта 2 на «Z», и это должно быть сделано в режиме реального времени. Итак, я придумал TextWatcher.

@Override
public void afterTextChanged(Editable s) {

    if (s.length() == 0)
      return;

     s.replace(editText.getSelectionStart(),    
     editText.getSelectionStart()+1, changeText(option));                                                                                                                                                                   

}

и это не работает. Я предполагаю, что я пытаюсь заменить символ более новым, прежде чем он будет напечатан (не уверен). Я просто хочу заменить последний набранный символ в любой позиции курсора в соответствии с выбранной опцией.

1 Ответ

0 голосов
/ 13 января 2020

Вы пробовали

beforeTextChanged(CharSequence s, int start, int count, int after)

в этом методе, вы можете изменить символ перед рендерингом. Получить CharSequence s и изменить символ в позиции (начало, начало + счет)

...