Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

View value of password edittext while a button is pressed

Tags:

android

How can I view the value of an edittext view whose input type is "password" when i click a button and when i release the button, the text display goes back to unreadable format? Like what microsoft does in windows 8 when you click the "eye" that is next to a password field.

Thanks

like image 469
F0r3v3r-A-N00b Avatar asked Jan 28 '15 06:01

F0r3v3r-A-N00b


4 Answers

 yourButton.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {

               switch ( event.getAction() ) {
                case MotionEvent.ACTION_DOWN: 
                   editText.setInputType(InputType.TYPE_CLASS_TEXT);
                break;
                case MotionEvent.ACTION_UP: 
                    editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                break;
                }
                return true;
        }
    });
like image 45
Murtaza Khursheed Hussain Avatar answered Nov 18 '22 14:11

Murtaza Khursheed Hussain


I found one of best solution for Design Support Library Users:

It is really easy to achieve with the newest Support Library v24.2.0.

What you need to do is just:

  1. Add the design library to your dependencies

    dependencies {
         compile "com.android.support:design:24.2.0"
    }
    
  2. Use TextInputEditText in conjunction with TextInputLayout

    <android.support.design.widget.TextInputLayout
        android:id="@+id/etPasswordLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true"
        android:layout_marginBottom="@dimen/login_spacing_bottom">
    
        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/fragment_login_password_hint"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>
    

The passwordToggleEnabled attribute will do the job!

  1. In your root layout don't forget to add xmlns:app="http://schemas.android.com/apk/res-auto"

  2. You can customize your password toggle by using:

app:passwordToggleDrawable - Drawable to use as the password input visibility toggle icon.
app:passwordToggleTint - Icon to use for the password input visibility toggle.
app:passwordToggleTintMode - Blending mode used to apply the background tint.

More details in TextInputLayout documentation.

enter image description here

like image 158
Pratik Butani Avatar answered Nov 18 '22 14:11

Pratik Butani


I like the current answers! Just to complement, if you have a CheckBox it is (according to me) good practice to use its OnCheckedListener instead like below:

CheckBox box = (CheckBox)findViewById(R.id.dialog_checkBox_showPassword);
EditText password = (EditText) findViewById(R.id.dialog_editText_password);
box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {

            if(checked){
                password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            }
            else{
                password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
            }
        }
    });
like image 5
Mazze Avatar answered Nov 18 '22 15:11

Mazze


On pressed button, set passwordField.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);. When release the button, set passwordField.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT );

like image 2
Joey Chong Avatar answered Nov 18 '22 15:11

Joey Chong