Как заставить {EditText} принимать ввод в формате: - PullRequest
0 голосов
/ 13 апреля 2020

Номерной знак автомобиля (регистрационный номер) - 2chars-2digit-2chars-4chars

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

1 Ответ

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

Вы не можете удалить дефис, потому что в ontextchanged, когда вы попадаете в положение символа дефиса, вы снова добавляете дефис.

Вы должны различать, если вы получили дефис добавление текста или удаление текста.

Если вы попали в дефис, удалив текст, вы не хотите добавлять дефис.

Вы можете проверить по этому коду if(before-count<0){

Ниже приведен ваш рабочий пример

     editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {


                if ((editText.getText().length() + 1 == 3 || editText.getText().length() + 1 == 6 || editText.getText().length() + 1 == 9)) {
                    if(before-count<0){
                        editText.setText(editText.getText() + "-");
                        editText.setSelection(editText.getText().length());
                    }
                }
            }

        @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
        }
    });
}

}

XML

 android:maxLength="13"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...