Search code examples
androidandroid-textinputlayouttextinputlayout

Hide password toggle using textinputlayout when the edit text is not in focus


This is the code I am using in my project:

<android.support.design.widget.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/signup_input_full_name_wrapper"
        android:layout_marginEnd="@dimen/signup_edit_text_input_fullname_margin_right"
        android:layout_marginRight="@dimen/signup_edit_text_input_fullname_margin_right"
        android:layout_marginStart="@dimen/signup_edit_text_input_fullname_margin_left"
        android:layout_marginLeft="@dimen/signup_edit_text_input_fullname_margin_left"
        android:layout_marginTop="@dimen/signup_edit_text_input_fullname_margin_top"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/signup_input_password_wrapper">
    <EditText
        android:id="@+id/signup_input_full_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="Full Name"
        android:textSize="@dimen/signup_edit_text_input_fullname_text_size"
        android:textColorHint="@color/signup_edit_text_hint_color"
         />
</android.support.design.widget.TextInputLayout>

This does the work like it says, i.e. it provides me with a password toggle for the nested edit text. What I want is if there is any way that it can be hidden when the edit text doesn't have focus??


Solution

  • it is may be not best practice but its work.

    your xml:

               <android.support.design.widget.TextInputLayout
                    android:id="@+id/etPasswordLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:passwordToggleEnabled="false">
    
                    <android.support.design.widget.TextInputEditText
                        android:id="@+id/etPassword"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:hint="password"
                        android:inputType="textPassword"/>
                </android.support.design.widget.TextInputLayout>
    

    your activity or fragment:

    etPassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean isFocused) {
                    if(!isFocused){
                        etPasswordLayout.setPasswordVisibilityToggleEnabled(false);
                    }else{
                        etPasswordLayout.setPasswordVisibilityToggleEnabled(true);
                    }
                }
            });