Метод фокусировки EditText не работает должным образом в Android

У меня есть кнопка "показать", и когда кнопка нажата, текстовое поле редактирования не должно быть редактируемым, и когда я нажимаю "Далее", я должен вернуть фокус для редактирования текстового поля. Я попробовал приведенный ниже код

  showans.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               editText.setFocusable(false);
     }
  next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editText.setFocusable(true);
            editText.setClickable(true);
      }
 }

Я пытался изменить значения между setFocusable и setClickable, но ничего не помогло. Когда я нажимаю кнопку showans в первый раз, поле редактирования теряет фокус и становится недоступным для нажатия, хотя я устанавливаю значение true, когда нажимаю кнопку "Далее" и все эти кнопки. Все эти текстовые поля и кнопки генерируются динамически. Любая помощь будет отличной!! Спасибо

4 ответа

Ты можешь использовать

editText.setInputType(InputType.TYPE_NULL); for uneditable EditText 

а также

editText.setInputType(InputType.TYPE_CLASS_TEXT) 

to make it editable

Вы можете попробовать использовать setFocusableInTouchMode - поэтому ваш код изменится на что-то вроде этого:

showans.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               editText.setFocusable(false);
               editText.setFocusableInTouchMode(false);
     }
  next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editText.setFocusable(true);
            editText.setClickable(true);
            editText.setFocusableInTouchMode(true);
      }
 }

Попробуйте и дайте мне знать, если это поможет.

Вы можете использовать метод setEnabled(), чтобы отключить или включить editText

//to disable
editText.setEnabled(false);
//to re enable
editText.setEnabled(true);

Пожалуйста, измените на editText.requestFocus();

Ты можешь использовать editText.clearFocus();

Другие вопросы по тегам