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?
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.
Ceci est obsolète
Dans xml de EditText iclude cet attribut: Android: password = "true"
Modifier
Android:inputType="textPassword"
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"
Vous devez utiliser PasswordTransformationMethod.getInstance()
au lieu de new PasswordTransformationMethod()
.
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());
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
.
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>
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"
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.