Existe uma maneira inteligente de permitir que o usuário alterne entre ocultar e visualizar a senha em um EditText do Android? Vários aplicativos baseados em PC permitem que o usuário faça isso.
176
Você pode alterar dinamicamente os atributos de um TextView. Se você definir o Atributo XML android:password
para true, a exibição mostrará pontos se você configurá-lo como false, o texto será mostrado.
Com o método setTransformationMethod, você poderá alterar esses atributos do código. (Isenção de responsabilidade: não testei se o método ainda funciona após a exibição da exibição. Se você tiver problemas com isso, deixe-me um comentário para que eu saiba.)
O código de amostra completo seria
yourTextView.setTransformationMethod(new PasswordTransformationMethod());
para ocultar a senha. Para mostrar a senha, você pode definir um dos métodos de transformação existentes ou implementar um TransformationMethod vazio que não faça nada com o texto de entrada.
yourTextView.setTransformationMethod(new DoNothingTransformation());
setTransformationMethod(null)
.É realmente fácil de obter desde a Biblioteca de suporte v24.2.0.
O que você precisa fazer é apenas:
Adicione a biblioteca de design às suas dependências
Use
TextInputEditText
em conjunto comTextInputLayout
O
passwordToggleEnabled
atributo fará o trabalho!No seu layout raiz, não se esqueça de adicionar
xmlns:app="http://schemas.android.com/apk/res-auto"
Você pode personalizar sua alternância de senha usando:
app:passwordToggleDrawable
- Drawable para usar como ícone de alternância da visibilidade da entrada de senha.app:passwordToggleTint
- Ícone a ser usado para alternar a visibilidade da entrada de senha.app:passwordToggleTintMode
- Modo de mesclagem usado para aplicar a tonalidade de fundo.Mais detalhes na documentação do TextInputLayout .
Para AndroidX
Substitua
android.support.design.widget.TextInputLayout
porcom.google.android.material.textfield.TextInputLayout
Substitua
android.support.design.widget.TextInputEditText
porcom.google.android.material.textfield.TextInputEditText
fonte
android:text
atributo ativadoTextInputEditText
. Você sempre pode levantar um problema no Google Issues Tracker para Androidapp:passwordToggleDrawable
(descontinuado) ouapp:endIconDrawable
então usar o drawable personalizado, como<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_eye_close" android:state_checked="true"/> <item android:drawable="@drawable/ic_eye_open"/> </selector>
acho que o Google deve corrigir esse comportamento. Boa discussãoPara mostrar os pontos em vez da senha, defina o PasswordTransformationMethod:
é claro que você pode definir isso por padrão no seu elemento edittext no layout xml com
Para mostrar novamente a senha legível, basta passar nulo como método de transformação:
fonte
android:password
está obsoleto agora e você deve usá-loandroid:inputType
.editText.getSelectionStart()
eeditText.getSelectionEnd()
para salvar a posição do cursor eeditText.setSelection(start, end)
restaurá-la.Mostrar:
Esconder:
Após cada uma dessas opções, o cursor é redefinido, portanto:
fonte
Você pode usar
app:passwordToggleEnabled="true"
aqui está um exemplo dado abaixo
fonte
app:endIconMode="password_toggle"
.Use a caixa de seleção e altere o tipo de entrada de acordo.
fonte
...
...
fonte
É um trabalho para mim. Isso o ajudará definitivamente
fonte
Eu sinto que quero responder a essa pergunta, mesmo que haja boas respostas,
de acordo com a documentação TransformationMethod fazer a nossa missão
Observe que eu uso faca de manteiga, mas é o mesmo se o usuário verificar mostrar a senha
fonte
Eu posso adicionar o código ShowPassword / HidePassword com apenas algumas linhas, independentes em um bloco:
fonte
Eu tive o mesmo problema e é muito fácil de implementar.
Tudo o que você precisa fazer é agrupar seu campo EditText em um (com.google.android.material.textfield.TextInputLayout) e nessa adição (app: passwordToggleEnabled = "true").
Isso mostrará o olho no campo EditText e, quando você clicar nele, a senha aparecerá e desaparecerá quando clicar novamente.
fonte
fonte
De uma forma muito simples:
Espero que ajude.
fonte
Você pode MOSTRAR / ocultar a senha usando este código abaixo:
CÓDIGO XML:
CÓDIGO JAVA:
fonte
Tente o seguinte:
Primeiro defina uma bandeira como global assim:
E defina o ouvinte para lidar com o toque no botão mostrar e ocultar a senha:
fonte
Experimente o projeto https://github.com/maksim88/PasswordEditText no github. Você nem precisa alterar seu código Java usando-o. Apenas mude
Editar texto
marcar para
com.maksim88.passwordedittext.PasswordEditText
no seu arquivo XML.
fonte
mostrar e ocultar a senha Edit_Text com a caixa de seleção
XML
código java
fonte
Você tentou com setTransformationMethod? Ele é herdado do TextView e deseja um TransformationMethod como parâmetro.
Você pode encontrar mais informações sobre o TransformationMethods aqui .
Ele também possui alguns recursos interessantes, como a substituição de caracteres.
fonte
O que eu fiz foi
Você pode conferir este vídeo para obter etapas e explicações mais detalhadas https://youtu.be/md3eVaRzdIM
Espero que ajude :)
fonte
Aqui está minha solução sem usar o método TextInputEditText e Transformação.
XML
Código Java
fonte
De acordo com esta fonte , se você migrou seu projeto para o AndroidX, poderá substituir
compile "com.android.support:design:24.2.0"
com
implementation "com.google.android.material:material:1.0.0"
Então, basta colocar o código abaixo no seu arquivo de layout:
Mais informações sobre o material
TextInputLayout
podem ser encontradas aqui .Para esta fonte , é recomendável migrar para o AndroidX da Biblioteca de suporte do Android:
fonte
No início, esta é a tela carregada com uma visibilidade de ativo de vetor de imagem
ao clicar, ele mudará para a visibilidade da imagem desativada
código para a troca de senha acima (código xml)
Código Java para operação do botão
fonte
Em XML faça assim
fonte
Minha extensão Kotlin. escrever uma vez usar em qualquer lugar
Você pode manter esse método em qualquer arquivo e usá-lo em qualquer lugar, usá-lo desta maneira
em que ivShowPassword é clicado em imageview (eye) e etPassword é Editext
fonte
Uma boa solução Configure um botão e use este código:
fonte
Adicione este método:
A chamada alternará entre o estado do tipo de entrada (você pode alterar a transformação de Linha Única para o seu favorito). Exemplo de uso:
fonte
fonte
fonte
fonte