Как я могу заменить одну заметку другой заметкой, когда пользователь печатает (замените «пробел» на «-») - PullRequest
1 голос
/ 02 мая 2019

Я использую систему тегов, аналогичную SO, и вместо того, чтобы заставлять пользователя находить тире в клавиатуре, я хочу, чтобы пространство автоматически переводилось в тире.

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

        imageTagsInput.addTextChangedListener(object : TextWatcher {

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

                imageTagsInput.removeTextChangedListener(this)
                imageTagsInput.setText(imageTagsInput.text.toString().replace(" ","-"))
                imageTagsInput.addTextChangedListener(this)
                imageTagsInput.setSelection(imageTagsInput.length())


            }

            override fun afterTextChanged(s: Editable?) {
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
            }

        })

И это xml EditText: android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-  "

1 Ответ

1 голос
/ 02 мая 2019

Добавьте что-то подобное в afterTextChanged

  String result = s.toString().replaceAll(" ", "-");
    if (!s.toString().equals(result)) {
         ed.setText(result);
         ed.setSelection(result.length());
         // alert the user
    }

Для получения дополнительной информации см. ответ

...