Edittext togglepassword многоточия изменяется на '*' в первый раз и затем снова появляется как точки - PullRequest
0 голосов
/ 12 ноября 2018

Я использовал Textinputlayout и edittext внутри него. И использовали один метод, чтобы изменить значок по умолчанию для точек на *, но после нажатия на значок глаза он снова изменит его только на точки. Как с этим справиться?

I want to implement like shown in the image for everytime it clicks the eye icon

Ниже мой код: -

.java файл

oldpw=(EditText) findViewById(R.id.oldpw);
oldpw.setTransformationMethod(new AsteriskPasswordTransformationMethod());

public class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source; // Store char sequence
        }
        public char charAt(int index) {
            return '*'; // This is the important part
        }
        public int length() {
            return mSource.length(); // Return default
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
};

XML-файл

<android.support.design.widget.TextInputLayout
    android:layout_marginTop="15dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginBottom="15dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:passwordToggleEnabled="true"
    app:passwordToggleDrawable="@drawable/show_password_selector"
    app:passwordToggleTint="#989898"
    android:id="@+id/et1"
    android:padding="0dp">

    <EditText

        android:hint="Old Password"
        android:inputType="textPassword"
        android:id="@+id/oldpw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</android.support.design.widget.TextInputLayout>

1 Ответ

0 голосов
/ 12 ноября 2018

Используйте этот метод:

В вашем макете XML

<EditText
    android:id="@+id/etPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Password"
    android:inputType="textPassword"
    android:drawableEnd="@drawable/eye" <!--setting eye icon here-->
    /> 

Тогда в вашем классе Java.

набор Boolean во всем мире.

Boolean isPasswordVisible = false;

Затем добавьте это в onCreate ()

 etPassword.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int DRAWABLE_RIGHT = 2;

            if(event.getAction() == MotionEvent.ACTION_UP) {
                if(event.getRawX() >= (etPassword.getRight() - etPassword.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                    if (isPasswordVisible) {
                        isPasswordVisible = false;
                        etPassword.setTransformationMethod(new PasswordTransformationMethod());
                    } else {
                        isPasswordVisible = true;
                        etPassword.setTransformationMethod(new HideReturnsTransformationMethod());
                    }
                    return true;
                }
            }
            return false;
        }
    });

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...