J'utilise un EditText pour entrer le mot de passe . Et une case à cocher pour afficher le mot de passe ou non . La fonction ci-dessous est la partie:
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
Quand il est coché, il affiche le mot de passe . Mais quand il n'est pas coché, il montre les étoiles . Comment le modifier pour afficher le nombre d'étoiles alors que la cb n'est pas cochée?
Je ne connais pas exactement les détails, mais ce code devrait fonctionner:
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!isChecked) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
password.setInputType(129);
}
}
});
129
est le type d'entrée défini lors du paramétrage de Android:inputType="textPassword"
modifier:
comme mentionné dans la réponse de @ user370305, 129
est la valeur du bit ou de l'opération lorsque
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Ce n'est pas une réponse,
Réponse déjà donnée et acceptée ..
Je veux juste clarifier à propos de 129
password.setInputType(129);
est en fait,
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
'|' n'est pas un tuyau , c'est un bitwise OR
. Il faut deux nombres binaires et si l’un des bits de valeur égale est 1,
En quoi cela concerne-t-il le type d'entrée? Chacun des InputTypes est en fait juste un élément TYPE_CLASS_TEXT is 1
, et TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000)
.
Effectuez un bitwise OR
sur eux:
00000001
10000000
------------
10000001 which is 129.
Essayez d'entrer input.setInputType(129);
à la place, vous verrez que ça va marcher. :)
Je pense que vous utilisez la mauvaise fonction. Je fais cela et travaille parfaitement:
passwordEditView = (EditText) rootView.findViewById(R.id.password);
final CheckBox showPasswordCheckBox = (CheckBox) rootView.findViewById(R.id.checkbox);
showPasswordCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (showPasswordCheckBox.isChecked()){
passwordEditView.setTransformationMethod(null);
}else{
passwordEditView.setTransformationMethod(new PasswordTransformationMethod());
}
}
});
Cela pourrait vous aider mate
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
// show password
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
// hide password
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
La fonctionnalité Basculer la visibilité du mot de passe a été ajoutée pour prendre en charge la version de bibliothèque 24.2.0, vous permettant de basculer le mot de passe directement à partir du champ de mot de passe sans avoir besoin d'un CheckBox.
Pour que cela fonctionne, définissez un type de mot de passe inputType sur la variable TextInputEditText
. Voici comment faire cela:
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.design.widget.TextInputEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="@string/password"
Android:inputType="textPassword"/>
</Android.support.design.widget.TextInputLayout>
use app: passwordToggleEnabled = true; disponible à partir de la bibliothèque de support Android version 24.2.0.
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:visibility="gone"
app:passwordToggleEnabled="true"
tools:visibility="visible"
Android:layout_marginBottom="@dimen/space_medium">
<Android.support.design.widget.TextInputEditText
Android:id="@+id/input_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:inputType="textPassword"
Android:imeOptions="actionDone"
Android:imeActionLabel="@string/btn_sign_in"
Android:hint="@string/hint_password" />
</Android.support.design.widget.TextInputLayout>
au lieu d'un mot de passe visible, pouvez-vous essayer avec TYPE_TEXT_VARIATION_NORMAL
public void ShowPassword() {
password.setInputType((cb.isChecked()) ?
InputType.TYPE_TEXT_VARIATION_NORMAL : InputType.TYPE_TEXT_VARIATION_PASSWORD;
}
Cela fonctionnera -
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_CLASS_TEXT);
} else {
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
Appelez cette méthode dans votre OnCheckedChangedListener
public static void toggleShowPassword(boolean show, EditText editText) {
if (show)
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
else
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
editText.setSelection(editText.length());
}
Le curseur EditText
réinitialise sa position après avoir modifié la InputType
c'est pourquoi nous ajoutons la dernière ligne editText.setSelection(editText.length())
si vous utilisez Xamarin (Visual Studio Mac, comme on l'appelle maintenant), vous pouvez le réaliser de cette manière (j'ai utilisé un commutateur).
/// <summary>
/// Toggles the password.
/// </summary>
/// <param name="field">Field.</param>
/// <param name="isChecked">If set to <c>true</c> is checked.</param>
private void TogglePassword(TextView field, bool isChecked)
{
/// masks with password character
if (isChecked)
{
field.TransformationMethod = new PasswordTransformationMethod();
}
/// unmasks password
else
{
field.TransformationMethod = null;
}
Ensuite, sur votre commutateur, cliquez sur quelque chose comme ça
switch.Click += delegate {
TogglePassword(textView, switch.Checked);
};