No meu aplicativo, eu tenho um EditText
cujo tipo de entrada padrão é definido android:inputType="textPassword"
por deault. Ele tem um CheckBox
à sua direita, que é quando marcado, altera o tipo de entrada desse EditText para NORMAL PLAIN TEXT. Código para isso é
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Meu problema é que, quando essa caixa de seleção está desmarcada, ela deve definir novamente o tipo de entrada como SENHA. Eu fiz isso usando-
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
Mas o texto dentro desse edittext ainda é visível. E, para surpresa, quando altero a orientação, ele define automaticamente o tipo de entrada como PASSWORD e o texto é marcado com marcadores (mostrado como uma senha).
Alguma maneira de conseguir isso?
android
passwords
android-edittext
Rajkiran
fonte
fonte
mailEdt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
. Funciona para mim.Respostas:
Apenas para as pessoas que estão tendo o mesmo problema. Basta adicionar um atributo extra a esse EditText programaticamente e pronto.
Para senha numérica (alfinete).
Além disso, verifique se o cursor está no final do texto no EditText. Porque, quando você altera o tipo de entrada, o cursor é automaticamente definido como o ponto inicial. Então, sugiro usar o seguinte código:
Ao usar a associação de dados, você pode usar o seguinte código
Se estiver usando o Kotlin,
fonte
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
editText.getSelectionStart()
eeditText.getSelectionEnd()
comsetSelection(start, end)
para evitar esse problema.use este código para alterar a senha para texto e vice-versa
para obter um código de exemplo completo, consulte http://www.codeproject.com/Tips/518641/Show-hide-password-in-a-edit-text-view-password-ty
fonte
O método acima realmente não funcionou para mim. A resposta abaixo funciona para 2,2 sdk.
Definir inputType para um EditText?
fonte
Outro exemplo simples usando o ImageView para alternar a visibilidade com menos código, devido à única atribuição InputType , precisamos apenas do operador de igualdade:
Substituindo:
Com:
Vai dar o mesmo resultado, mas palavra mais curta.
fonte
fonte
Isso funcionou para mim:
fonte
Ok Então, depois de horas tentando finalmente implementou. Abaixo está o código ..
Explicações: - Eu tenho um botão com texto padrão como mostrado. Após o evento onclick, verificando se o texto do botão é exibido. Se for exibido, altere o tipo de entrada, ajuste a posição do cursor e defina o novo texto como oculto.
Quando está oculto ... fazendo reversão, ou seja, ocultando a senha, ajustando o cursor e definindo o texto como mostrado. E é isso. Está funcionando como um encanto.
fonte
Para usuários do kotlin:
fonte
Use este código para alterar a senha para texto e vice-versa. Este código funcionou perfeitamente para mim. Tente isso ..
fonte
Este é o manipulador onClick completo do Image / Button para mostrar / ocultar a senha.
fonte
edtPassword.getSelectionStart()
.O recurso Alternância de visibilidade da senha foi adicionado ao suporte à versão da biblioteca 24.2.0, permitindo que você alterne a senha diretamente da
EditText
sem necessidade de umCheckBox
.Você pode fazer isso funcionar basicamente atualizando sua versão da biblioteca de suporte para 24.2.0 e depois definindo uma
inputType
senha noTextInputEditText
. Veja como fazer isso:Você pode obter mais informações sobre o novo recurso na documentação do desenvolvedor para TextInputLayout .
fonte
Desde a Biblioteca de suporte v24.2.0. você pode conseguir isso muito fácil
O que você precisa fazer é apenas:
Adicione a biblioteca de design às suas dependências
Use
TextInputEditText
em conjunto comTextInputLayout
passwordToggleEnabled
atributo fará a alternância da senha aparecerNo 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 .
fonte
Minha busca por uma solução semelhante para o Visual Studio / Xamarin me levou a esse segmento. Abaixo está o que funcionou para mim com o Xamarin. Observe que essa implementação mantém o
TYPE_TEXT_FLAG_NO_SUGGESTIONS
sinalizador ao alternar entre os modos.EditText et = FindViewById<EditText>(Resource.Id.ET);
Para mostrar caracteres:
et.InputType = Android.Text.InputTypes.TextVariationVisiblePassword | Android.Text.InputTypes.TextFlagNoSuggestions;
Para ocultar caracteres:
et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText;
Para definir a posição para terminar:
int position = et.Text.Length;
et.SetSelection(position, position);
fonte
if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD ); }else{ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ); }
para o Visual Studio / Xamarin ..?alguma situação dinâmica
holder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);
não funcionará, portanto, use ambos melhor assimNota: isso é adequado para quando você estiver usando controles dinâmicos, como o arrayaapter
fonte
Depois de
setInputType
procurar um campo de senha, você terá problemas com o FONT.Aqui está minha solução para mostrar / ocultar senha sem problema de fonte
Nota: uso em
InputType.TYPE_TEXT_VARIATION_PASSWORD
vez deInputType.TYPE_CLASS_TEXT
ouHideReturnsTransformationMethod
porque quero que o teclado exiba texto e númeroDEMO
fonte
Eu removeria
android:inputType="textPassword"
do seu layout. É por isso que está voltando à senha quando a orientação muda. Porque cada vez que a orientação muda, a exibição está sendo recriada.Quanto ao primeiro problema, tente o seguinte:
basicamente esvaziando o texto antes de alterar o tipo de entrada e adicioná-lo novamente.
fonte
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
imediatamente após a inicialização, mas infelizmente!Código completo quando você deseja aplicar a visibilidade da senha no texto de edição da senha.
Crie um identificador [Qualquer drawable ou Checkbox]
ao clicar ou em Marcado / Desmarcar escreva:
Não se esqueça de escrever esta linha:
Redefine o cursor para o final da linha.
fonte
Eu mudo o tipo de entrada na minha caixa de seleção, assim como
OnCheckedChangeListener
eu faço:E finalmente funcionou.
Parece um problema booleano com
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
. Inverta a bandeira e deve corrigir o problema.No seu caso:
fonte
Use o método de transformação:
Esconder:
Para visível:
É isso aí.
fonte
Apenas um comentário adicional sobre a resposta correta fornecida por @Rajkiran, você pode adicionar
para o estado de entrada NORMAL, para que os usuários não fiquem incomodados com a sugestão automática do teclado
fonte
final int [] count = {0};
fonte
Com base nas respostas de neeraj t e Everton Fernandes Rosario escrevi na Kotlin, onde
password
é um id de um EditText em seu layout.fonte