Предложения клавиатуры приводят к тому, что часть сообщения Android EditText.setError () не отображается

Когда я использую edittext.setError("enter a comment") в android, он отлично работает до тех пор, пока не появятся предложения клавиатуры, и ошибка будет edittext над edittext , после чего не отобразится сообщение об ошибке.

Почему он это делает?

После ввода текстового поля всплывающее всплывающее окно появляется над текстовым полем

Solutions Collecting From Web of "Предложения клавиатуры приводят к тому, что часть сообщения Android EditText.setError () не отображается"

setError
Устанавливает правое соединение с текстом TextView на значок «ошибка» и устанавливает сообщение об ошибке, которое будет отображаться во всплывающем окне, когда TextView имеет фокус. Значок и сообщение об ошибке будут сброшены до нуля, если любые ключевые события вызовут изменения в тексте TextView. Если ошибка равна нулю, сообщение об ошибке и значок будут удалены.

Поэтому, когда текст изменяется, он должен исчезнуть. Я не знаю, почему этого не происходит в вашем случае.

Он также должен быть очищен, если сообщение об ошибке равно null, поэтому один трюк может быть:

 edittext = (EditText)findViewById(R.id.foo); // add below this line edittext.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after){} public void onTextChanged(CharSequence s, int start, int before, int count){ if(s != null && s.length() > 0 && edittext.getErrorMessage() != null) { edittext.setErrorMessage(null); } } }); 

@Andy Lobel: Я также столкнулся с этой проблемой и должен ее исправить, помещая белые пробелы (10-12) в конец текста, поэтому усечение произошло только в белых пробелах 🙂 Кроме того, мой setError выглядел лучше, SetError text и EditText выровнены.

Другое дело: я застрял в другой проблеме, в которой отображается ярлык, но это плавающее сообщение и его прямоугольное поле не отображаются.

Мой макет содержит:

1) Имя пользователя Редактировать текст

2) Редактирование пароля

3) Подтвердите текст редактирования пароля

4) Кнопка регистрации

Таким образом, я проверял и показывал ошибку во время нажатия кнопки «Регистрация», но выяснил, что сообщение не появилось и доступно только для рисования, и обнаружил, что это сообщение появится только тогда, когда Редактирование текста будет сфокусировано как:

В соответствии с setError API Описание: – Устанавливает правое соединение, вытягиваемое TextView, на значок «ошибка» и устанавливает сообщение об ошибке, которое будет отображаться во всплывающем окне, когда TextView имеет фокус.

Итак, сообщение предназначалось для UserName Edit Text, но последний фокус остался на странице Confirm Password Edit, поэтому он так и не появился

Решение / настройка для такого случая:

 EditText.setFocusableInTouchMode(true); EditText.requestFocus(); EditText.setError("My Error Text"); 

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

Я потратил много времени, пытаясь исправить это …

Легкое исправление: – убедитесь, что ваш текст ошибки действительно очень короткий

Исправление, из-за которого все это работает:

Когда Android отображает экранную клавиатуру, представление с текстом редактирования «перемещается» вверх … и текст ошибки перемещается вместе с этим. Усечение обычно происходит как часть этого. Вы можете легко исправить это, поместив весь свой макет в скобку ScrollView … таким образом, Android может переместить ваш EditText, прокрутив его с помощью всего макета, – и затем сообщение об ошибке будет полностью отображено. Попробуйте – это действительно работает.

PS: Мне нравится, что вы разместили скриншот своей проблемы. Делает вещи намного легче.

Установите значение inputType="" для EditText с соответствующим значением android:inputType="textEmailAddress" и всплывающее окно исчезнет при вводе первого символа.

Другое решение:
Добавление android:windowSoftInputMode="adjustResize" в теге активности в AndroidManifest.xml исправил проблему для меня