web-dev-qa-db-fra.com

Android: Comment définir la propriété de mot de passe dans un texte d'édition?

Je dois créer un formulaire de connexion avec les champs "nom d'utilisateur" "mot de passe" et deux boutons "connexion" et "annuler" dans mon application Android. 

J'utilise un dialogue d'alerte avec edittext à l'intérieur. 

C'est le code que j'ai utilisé pour créer le mot de passe edittext ..

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

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

Mon problème est que, le texte brut est affiché au lieu de «points» lorsque j'ouvre un pavé tactile pour éditer le mot de passe. (Il est affiché sous forme de points lorsque le mode clavier n'est pas activé)

Quelqu'un peut-il proposer une solution? 

42
Dhanesh
Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

Celui-ci fonctionne pour moi.
Mais vous devez regarder le commentaire d'Octavian Damian, il a raison.

90
ernazm

Ceci est obsolète

Dans xml de EditText iclude cet attribut: Android: password = "true"  

Modifier

Android:inputType="textPassword"
25
Basil

Voici une nouvelle façon de mettre des points dans le mot de passe

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

add Android: inputType = "textPassword"

11
Kelvin C Ricafort

Vous devez utiliser PasswordTransformationMethod.getInstance() au lieu de new PasswordTransformationMethod().

5
LuxuryMode

La seule manière qui a fonctionné pour moi en utilisant du code (pas XML) est la suivante:

etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
4
voghDev

Voir ce lien texte voir Android: mot de passe

Ceci s'applique également à EditText, car il s'agit d'une sous-classe directe connue de TextView

3
sfat

En faisant cela, j’ai constaté que pour définir la gravité au centre et que l’indicateur de mot de passe reste affiché lorsque using inputType, le Android:gravity="Center" doit se trouver à la fin de votre ligne 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>
3
Lynn S

Pour définir le mot de passe activé dans EditText, nous devons définir un attribut "inputType" dans le fichier xml. Si nous utilisons uniquement EditText, nous aurons défini le type de saisie dans EditText comme indiqué dans le code ci-dessous.

                    <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" />

L'attribut d'activation du mot de passe est 

 Android:inputType="textPassword"

Mais si nous implémentons Password EditText avec Material Design (avec la bibliothèque de support With Design), nous aurons le code en écriture indiqué ci-dessous.

<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: - Dans Android SDK 24 et versions ultérieures, "passwordToggleEnabled" est défini par défaut sur true. Donc, si nous avons le traitement personnalisé de la fonction d'affichage/masquage dans le mot de passe EditText, nous devrons le définir comme faux dans le code comme indiqué ci-dessus dans.

app:passwordToggleEnabled="true"

Pour ajouter la ligne ci-dessus, nous devrons ajouter la ligne ci-dessous dans la mise en page racine.

xmlns:app="http://schemas.Android.com/apk/res-auto"
1
Ashish Saini

Ma recherche d'une solution similaire pour Visual Studio 2015/Xamarin m'a conduit à ce fil. Bien que définir EditText.InputType sur Android.Text.InputTypes.TextVariationVisiblePassword masquait correctement le mot de passe lors de la saisie de l'utilisateur, le mot de passe n'était pas "masqué" s'il était visible avant le rendu de la mise en page EditText (avant que l'utilisateur n'ait saisi son mot de passe). Afin de masquer un mot de passe visible une fois que l'utilisateur a soumis son mot de passe et rendu la mise en page EditText, j'ai utilisé EditText.TransformationMethod = PasswordTransformationMethod.Instance comme suggéré par LuxuryMode.

0
Tony