Сделайте несколько предварительно заполненных символов недоступными для редактирования в редактируемом тексте с помощью Android

#android #android-edittext #textwatcher #android-textwatcher

Вопрос:

Я работаю EditText , где я отображения предварительное заполнение кода страны в начале допустим » 971″, я хочу, что если пользователь пытается щелкнуть и отредактировать в EditText , он не должен изменить или удалить » 971″ и могут только быть в состоянии поставить число после того, как » 971 123445579″, а если пытаться удалить номер нажмите » 971″ необходимо удалить.

Мой код приведен ниже, пожалуйста, объясните мне, как я могу этого достичь. Спасибо

 private fun setupTextChangeListener() {
        edit_text.textWatcherListener = object : TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
            }

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

            override fun afterTextChanged(s: Editable?) {
            }
        }
    }
 

// В этом методе я помещаю Start Drawable в редактируемый текст:

 private fun setDatePickerIconOnDemand() {
    edit_text.setDrawableStart(context.drawable(R.drawable.ic_earh_arrow_down_default))
    edit_text.setDrawable()
}
 

Ответ №1:

Вы можете добавить следующие строки кода при onTextChanged обратном вызове

  if (edit_text.length() < 5 || !edit_text.text!!.startsWith(" 971 ")) {
     edit_text.setText(" 971 ")
     edit_text.setSelection(edit_text.length())
   }
 

Что он будет делать, так это: Он проверит «Изменено», если ваш текущий текст в редактируемом тексте является только кодом вашей страны, установите код страны в редактируемом тексте и переместите курсор в конце.

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

1. Очень признателен за вашу помощь.