Eu preciso de um EditText
que se parece com isso onError:
chamar onError se parece com isso:
Nota: o aplicativo está sendo executado no SDK 19 (4.4.2)
SDK mínimo é 1
Existe um método semelhante ao setError que faça isso automaticamente ou preciso escrever o código para ele?
Obrigado
EditText
. Provavelmente, você precisará de algo que envolvaEditText
ou acrescente a ele. Consulte github.com/rengwuxian/MaterialEditText .Respostas:
Não há necessidade de usar uma biblioteca de terceiros, uma vez que o Google introduziu o
TextInputLayout
como parte dodesign-support-library
.Seguindo um exemplo básico:
Layout
Nota: Ao definir
app:errorEnabled="true"
como um atributo,TextInputLayout
ele não mudará de tamanho quando um erro for exibido - portanto, basicamente bloqueia o espaço.Código
Para mostrar o erro abaixo,
EditText
basta ligar#setError
para oTextInputLayout
(NÃO no filhoEditText
):Resultado
Para ocultar o erro e redefinir a tonalidade, basta ligar
til.setError(null)
.Nota
Para usar o arquivo,
TextInputLayout
você deve adicionar o seguinte às suasbuild.gradle
dependências:Definindo uma cor personalizada
Por padrão, a linha do
EditText
será vermelha. Se você precisar exibir uma cor diferente, poderá usar o código a seguir assim que ligarsetError
.Para limpá-lo, basta chamar a
clearColorFilter
função, assim:fonte
textInputLayout.setError("Error messsage")
a cor doEditText
vermelho. Para redefini-lo, basta ligartextInputLayout.setError(null)
.editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
não é mais necessário com a mais recente biblioteca de suporteEditText
, não noTextInputLayout
. Vi essa resposta e ainda não conseguia descobrir o que precisava mudar. Coisa muito fácil de perder.Ligue em
myTextInputLayout.setError()
vez demyEditText.setError()
.Esses contêineres e contenções têm dupla funcionalidade na configuração de erros. A funcionalidade que você precisa é a do contêiner. Mas você pode exigir a versão mínima de 23 para isso.
fonte
Seu
EditText
deve ser embrulhado em umTextInputLayout
Para receber uma mensagem de erro como você deseja, defina o erro como
TextInputLayout
Você deve adicionar a dependência da biblioteca de suporte ao design. Adicione esta linha em suas dependências gradle
fonte
A resposta do reVerse é ótima, mas não apontou como remover o tipo de dica de ferramenta de erro flutuante
Você precisará
edittext.setError(null)
remover isso.Além disso, como alguém apontou, você não precisa
TextInputLayout.setErrorEnabled(true)
Layout
Código
fonte
fonte
Se alguém ainda estiver enfrentando o erro ao usar a biblioteca de design do google, conforme mencionado na resposta, use-o como comentado por @h_k, que é -
Em vez de chamar setError em TextInputLayout , você pode estar usando setError no próprio EditText .
fonte
fonte