2011-05-23 12 views
40

Necesito crear un formulario de inicio de sesión con los campos 'nombre de usuario' 'contraseña' y dos botones 'iniciar sesión' y 'cancelar' en mi aplicación de Android.Android: ¿Cómo establecer la propiedad de la contraseña en un texto de edición?

Estoy usando un diálogo de alerta con edittext dentro de eso.

Este es el código que usé para crear EditarTexto contraseña ..

 final EditText Password = new EditText(this); 
    Password.setGravity(Gravity.CENTER); 
    Password.setHint("Password"); 
    Password.setWidth(200); 

    Password.setTransformationMethod(new PasswordTransformationMethod()); 
    login_alert.addView(Password); 

Mi problema es que, texto plano se muestra en lugar de 'puntos' cuando abro un softkeypad para editar la contraseña. (Se muestra como puntos cuando no está en el modo de teclado)

¿Alguien puede sugerir una solución?

+14

Su estilo de nombre de miembro le causará problemas. ¿Qué pasa si 'Contraseña' es una clase real existente, Dios tenga cuidado con los métodos estáticos. –

+0

Intenté renombrar ... todavía no tuve suerte – Dhanesh

+0

Entiendo ... muchas gracias ... :) – Dhanesh

Respuesta

82
Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 

Esta funciona para mi.
Pero tienes que mirar el comentario de Octavian Damiean, él tiene razón.

+0

Muchas gracias ernazm .. Este funciona bien. Tengo más qn .. Mi "Password.setHint (" Contraseña ");" Parece que no funciona ahora. ¿Alguna idea? – Dhanesh

+0

Extraño. Intenté combinar 'setHint' con' setInputType' y me funcionó a la perfección. Ese es mi código: 'EditText Password = ((EditText) findViewById (R.id.editText1)); Password.setHint ("Contraseña"); Password.setInputType (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); ' – ernazm

+0

[Aquí] (http://stackoverflow.com/a/22255310/426227) es una explicación de por qué necesita tanto' TYPE_CLASS_TEXT' como 'TYPE_TEXT_VARIATION_PASSWORD'. – testing

3

ver este enlace text view android:password

Esto se aplica para EditText así, ya que es una subclase directa conocida de TextView.

+1

@PareshMayani, lo siento amigo mío, pero EditText es una subclase de TextView. Ahora, por favor, detenga "-1" -esto es todo lo que no sabe o cree que está mal – sfat

+0

@PareshMayani y ¿qué pasa con el comentario? También podrías mejorar mi respuesta si crees que no fue directa – sfat

22

Esto es obsoleto

En xml de EditarTexto Iclude este atributo: androide: contraseña = "true"

Editar

android:inputType="textPassword" 
+0

¿Olvidaste algo? – Reno

+0

Quería hacerlo con el código. – Dhanesh

+4

android: password = "true" está en desuso – dhiku

3

Encontré al hacer esto que para establecer la gravedad en el centro, y aún tener su pista de contraseña mostrar cuando using inputType, el android:gravity="Center" debe estar al final de su línea XML.

<EditText android:textColor="#000000" android:id="@+id/editText2" 
    android:layout_width="fill_parent" android:hint="Password" 
    android:background="@drawable/rounded_corner" 
    android:layout_height="fill_parent" 
    android:nextFocusDown="@+id/imageButton1" 
    android:nextFocusRight="@+id/imageButton1" 
    android:nextFocusLeft="@+id/editText1" 
    android:nextFocusUp="@+id/editText1" 
    android:inputType="textVisiblePassword" 
    android:textColorHint="#999999" 
    android:textSize="16dp" 
    android:gravity="center"> 
</EditText> 
5

Es necesario utilizar PasswordTransformationMethod.getInstance() en lugar de new PasswordTransformationMethod().

10

Aquí es una nueva manera de poner puntos en la contraseña

<EditText 
    android:id="@+id/loginPassword" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:hint="@string/pwprompt"/

añadir androide: inputType = "textPassword"

+0

Parece ser la forma recomendada para la declaración xml. http://developer.android.com/training/keyboard-input/style.html – Loenix

4

La única manera que trabajó para mí usando el código (no XML) es éste :

etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
0

Mi búsqueda para una solución similar para Visual Studio 2015/Xamarin me lleva a este hilo. Mientras configuraba EditText.InputType a Android.Text.InputTypes.TextVariationVisiblePassword ocultaba la contraseña correctamente durante la entrada del usuario, no "ocultaba" la contraseña si estaba visible antes de que se procesara el diseño de texto (antes de que el usuario enviara su contraseña). Para ocultar una contraseña visible después de que el usuario envíe su contraseña y se represente el diseño de EditText, utilicé EditText.TransformationMethod = PasswordTransformationMethod.Instance según lo sugerido por LuxuryMode.

0

Para establecer la contraseña habilitada en EditText, tendremos que establecer un atributo "inputType" en el archivo xml.Si solo usamos EditText, habremos establecido el tipo de entrada en EditText como se indica en el siguiente código.

    <EditText 
        android:id="@+id/password_Edit" 
        android:focusable="true" 
        android:focusableInTouchMode="true" 
        android:hint="password" 
        android:imeOptions="actionNext" 
        android:inputType="textPassword" 
        android:maxLength="100" 
        android:nextFocusDown="@+id/next" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 

habilitación de contraseña atributo es

android:inputType="textPassword" 

Pero si estamos implementando contraseña EditarTexto con material de diseño (con biblioteca de soporte Diseño) entonces tendrá que escribir el código como bramido dado.

<android.support.design.widget.TextInputLayout 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:id="@+id/txtInput_currentPassword" 
       android:layout_width="match_parent" 
       app:passwordToggleEnabled="false" 
       android:layout_height="wrap_content"> 

       <EditText 
        android:id="@+id/password_Edit" 
        android:focusable="true" 
        android:focusableInTouchMode="true" 
        android:hint="@string/hint_currentpassword" 
        android:imeOptions="actionNext" 
        android:inputType="textPassword" 
        android:maxLength="100" 
        android:nextFocusDown="@+id/next" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 
      </android.support.design.widget.TextInputLayout> 

@note: - En Android SDK 24 y por encima, "passwordToggleEnabled" es por defecto cierto. Entonces, si tenemos el manejo de la función show/hide en la contraseña EditText, tendremos que configurarlo como código falso en.

app:passwordToggleEnabled="true" 

Para agregar la línea anterior, tendremos que agregar la línea siguiente en el diseño de la raíz.

xmlns:app="http://schemas.android.com/apk/res-auto" 
Cuestiones relacionadas