Home » Android » android – Show the password with EditText

android – Show the password with EditText

Posted by: admin April 23, 2020 Leave a comment

Questions:

I use an EditText to enter password.
And a CheckBox to show password or not.
Below function is the part:

public void ShowPassword() {
    if (cb.isChecked()) {
        password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
    } else {
        password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
    }
}

When it checked, it show password.
But when it not checked, it does show stars.
How to modify it to show star while the cb is not checked?

How to&Answers:

I don’t know exactly the specifics, but this code should work:

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 is the input type set when setting android:inputType="textPassword"

edit:

as mentioned in @user370305’s answer, 129 is the value of the bitwise or operation when you do

password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

Answer:

This is not an answer,

Answer already given and accepted..

I just want to clarify about 129

password.setInputType(129);

is Actually,

password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

‘|’ is not a pipe, it’s a bitwise OR. It takes two binary numbers and if either of the bits of equal value are 1,

How this relates to the input type: Each of the InputTypes are actually just ints.
TYPE_CLASS_TEXT is 1, and TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000).

Perform a bitwise OR on them:

00000001

10000000

------------

10000001 which is 129.

Try entering input.setInputType(129); instead, you’ll see it’ll work. 🙂

Answer:

I think you are using the wrong function. I make that way and work perfectly:

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());
       }
    }
});

Answer:

This might help you 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());
        }
    }
});

Answer:

The Password Visibility Toggle feature has been added to support library version 24.2.0 enabling you to toggle the password straight from the password field without the need for a CheckBox.

You can make that work basically by setting an inputType of password on the TextInputEditText. Here’s how to do that:

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

Answer:

use app:passwordToggleEnabled = true; available from Android support library 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>

Answer:

instead of visible password, can you try with TYPE_TEXT_VARIATION_NORMAL

public void ShowPassword() {
password.setInputType((cb.isChecked()) ? 
InputType.TYPE_TEXT_VARIATION_NORMAL : InputType.TYPE_TEXT_VARIATION_PASSWORD;
}

Answer:

Call this method inside your 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());
}

The EditText cursor resets its position after changing the InputType that’s why we add the last line editText.setSelection(editText.length())

Answer:

This will work –

public void ShowPassword() {
    if (cb.isChecked()) {
        password.setInputType(InputType.TYPE_CLASS_TEXT);
    } else {
        password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    }
}

Answer:

on the off chance that you are using Xamarin (Visual Studio Mac as it’s now called) you can achieve it this way (I used a Switch)

 /// <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;
      }

Then on your Switch .click do something like this

switch.Click += delegate {
            TogglePassword(textView, switch.Checked);
        };

Answer:

okay:

To show readeable text:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)

To “star” the password:

setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD)

But why? The Type_Text_Variation_Password set it to stars, but why does only adding Type_Claas_Text revive the visibel password?
I would have thought that Type_Text_Variation_VISIBLE_Password comes into play …

Answer:

public void onCheckBox(View v2)
{



    CheckBox cb = (CheckBox)this.findViewById(R.id.pass_Check);
    EditText et1=(EditText)this.findViewById(R.id.edt_Pass);
        if(cb.isChecked())
        {
        et1.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
        }
        else 
        {
        et1.setInputType(129);
        }

}