2010-04-06 12 views

Respuesta

182

De acuerdo con TextView docs, la versión programática de android: contraseña es setTransformationMethod(), no setInputType(). Así que algo como:

mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

debería hacer el truco.

+3

Solo para agregar a esto, necesita llamar a setTransformationMethod * en su lugar * de setInputType.Llamar a setInputType después de setTransformationMethod hace que EditText no vuelva a estar en el modo de contraseña. –

+9

esta respuesta es incorrecta para la pregunta que se hace. Esto solo transforma el texto ingresado en 'EditText' (reemplaza los caracteres con puntos de contraseña). Esto no tiene ningún efecto sobre lo que se permite ingresar en el 'EditText'. – slinden77

+3

setInputType finalmente llama a setTransformationMethod desde adentro, por lo que si pasa el TYPE_TEXT_VARIATION_PASSWORD a setInputType lo hará por usted. El problema parece ser evidente al llamar a setSingleLine después de llamar a setInputType, que llamará a setTransformationMethod con nulo o al transformador de una sola línea, borrando así el transformador de contraseña. – sparkym3

-1

Trate de añadir esto a la etiqueta EditarTexto/Vista de Texto en su diseño

android:password="true" 

Edit: Acabo de releer su puesto, tal vez lo que necesita para hacer esto después de la construcción. No veo por qué tu fragmento no funcionaría.

+0

No tengo un archivo de diseño en este caso, los campos se están generando programáticamente. – user246114

+0

¡Sí, se está haciendo después de la construcción, no estoy seguro de por qué tampoco funciona! – user246114

+5

¡esta opción ahora está en desuso! – swiftBoy

332

Para establecer el tipo de entrada para un EditText mediante programación, debe especificar que el tipo de clase de entrada es texto.

editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
+2

¡Su sugerencia ha funcionado perfectamente para mí! Tuve un problema similar al establecer programáticamente el tipo de entrada en multilínea. – MissPiplup

+5

+1 ed. Esta es una respuesta simple. Esto debe marcarse como respuesta. –

+0

Un gran consejo. Gracias – Mariam

13

Para permitir sólo números:

password1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER); 

Transformar (ocultar) la contraseña:

password1.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
23

i he resolver todos con

.setInputType(InputType.TYPE_CLASS_NUMBER); 

para ver clara datos y

.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); 

para ver los puntos (si los datos son un número, no es la elección che otra clase)

+0

Funcionó como encanto. –

7
editText.setInputType(EditorInfo.TYPE_CLASS_NUMBER); 

// se puede cambiar el tipo de _... acuerdo a sus necesidades.

0

Sé que la respuesta esperada está en Java. Pero aquí está mi 2 centavos de consejos siempre tratan de manejar vista cosas relacionadas en XML (al menos lo básico) así que yo sugeriría más bien utilizar un atributo xml más que el manejo de este caso de uso en java

<EditText 
    android:inputType="textPassword"/> 
+2

En algunos casos, es posible que desee alternar entre diferentes tipos de entrada, p. ocultar/mostrar la contraseña ingresada en un campo; que es lo que me permite esta página – William

+1

, pero para eso hay una opción en EditText que le permite mostrar/ocultar la contraseña sin necesidad de hacerlo por su cuenta, también da una buena animación para eso. –

+0

gracias por la información, la he visto aquí https://stackoverflow.com/a/41163578/3310235 – William

0

Esto puede ser de ayuda a otros como yo que querían alternar entre la contraseña y el modo de texto libre. Intenté utilizar los métodos de entrada sugeridos pero solo funcionó en una dirección. Podría pasar de contraseña a texto pero luego no podría revertir. Para aquellos que tratan de manejar una (por ejemplo, una casilla de verificación Mostrar contraseña) de palanca utilizar

 @Override 
     public void onClick(View v) 
     { 
      if(check.isChecked()) 
      { 
       edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); 
       Log.i(TAG, "Show password"); 
      } 
      else 
      { 
       edit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
       Log.i(TAG, "Hide password"); 
      } 
     } 

tengo que acreditar this para la solución. ¡Ojalá hubiera encontrado eso hace unas horas!

Cuestiones relacionadas