Мне нужно EditText
, чтобы это выглядело так:
вызов onError выглядит следующим образом:
Примечание: приложение работает на SDK 19 (4.4.2)
мин SDK равен 1
Есть ли метод, похожий на setError, который делает это автоматически, или я должен написать код для него?
Спасибо
android
android-edittext
к.м.н.
источник
источник
EditText
. Скорее всего, вам нужно что-то, что оборачиваетEditText
или иным образом добавляет к этому. См. Github.com/rengwuxian/MaterialEditText .Ответы:
Нет необходимости использовать стороннюю библиотеку, так как Google представил
TextInputLayout
как частьdesign-support-library
.Следуя базовому примеру:
раскладка
Примечание. При установке
app:errorEnabled="true"
в качестве атрибутаTextInputLayout
он не изменит свой размер после появления ошибки - поэтому он в основном блокирует пространство.Код
Для того , чтобы показать ошибку ниже
EditText
вам просто нужно позвонить#setError
наTextInputLayout
(НЕ на ребенкаEditText
):результат
Чтобы скрыть ошибку и сбросить оттенок, просто позвоните
til.setError(null)
.Заметка
Для использования
TextInputLayout
вы должны добавить следующее в вашиbuild.gradle
зависимости:Установка собственного цвета
По умолчанию линия
EditText
будет красной. Если вам нужно отобразить другой цвет, вы можете использовать следующий код, как только вы позвонитеsetError
.Чтобы очистить его, просто вызовите
clearColorFilter
функцию, например так:источник
textInputLayout.setError("Error messsage")
цветEditText
должен стать красным. Для того чтобы его сбросить, достаточно позвонитьtextInputLayout.setError(null)
.editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
больше не нужна больше с последней библиотекой поддержкиEditText
, а не дляTextInputLayout
. Я видел этот ответ и все еще не мог понять, что мне нужно изменить. Очень легко пропустить.Позвони
myTextInputLayout.setError()
вместоmyEditText.setError()
.Эти контейнеры и контейнеры имеют двойную функциональность при ошибках настройки. Функциональность, которая вам нужна - контейнерная. Но вам может потребоваться минимальная версия 23 для этого.
источник
Вы
EditText
должны быть завернуты вTextInputLayout
Чтобы получить сообщение об ошибке, как вы хотели, установите ошибку в
TextInputLayout
Вы должны добавить библиотеку поддержки дизайна. Добавьте эту строку в ваши зависимости gradle
источник
Ответ reVerse хорош, но он не указал, как удалить всплывающую подсказку об ошибке
Вы должны будете
edittext.setError(null)
удалить это.Кроме того, как кто-то указал, вам не нужно
TextInputLayout.setErrorEnabled(true)
раскладка
Код
источник
источник
Если кто-то все еще сталкивается с ошибкой при использовании библиотеки дизайна Google, как упомянуто в ответе, пожалуйста, используйте это как комментарий @h_k, который является -
Вместо вызова setError для TextInputLayout , вы можете использовать setError для самого EditText .
источник
источник