Переключение пароля textinputlayout, удерживая нажатой

Я использую TextInputLayout в моем макете для поля пароля. Все работает, файл и пароль, и простой переключается правильно, когда я нажимаю кнопку переключения пароля. Каждый раз, когда я нажимаю кнопку переключения пароля, содержимое переключается между обычным режимом и режимом пароля.

Но мне интересно, можно ли изменить режим показа пароля, чтобы кнопка переключения пароля оставалась нажатой, а не щелкала. Это означает, что пока я удерживаю кнопку переключения пароля нажатой, я вижу простой контент, а когда я отпускаю кнопку, содержимое возвращается в режим пароля. Вы хоть представляете, возможно ли это?

ОБНОВИТЬ

Если вы добавите это в свой макет:

<android.support.design.widget.TextInputLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/pin_hint"
    app:passwordToggleEnabled="true"
    app:passwordToggleDrawable="@drawable/password_visibility_eye"
    app:hintEnabled="true"
    app:hintAnimationEnabled="true"
    app:errorEnabled="true">
    <android.support.design.widget.TextInputEditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:imeOptions="actionDone"
        android:maxLength="16"/>
</android.support.design.widget.TextInputLayout>

и используйте этот чертеж как password_visibility_eye.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_visibility_on" android:state_pressed="true" android:state_checked="true" />
    <item android:drawable="@drawable/ic_visibility_on" android:state_pressed="true" />
    <item android:drawable="@drawable/ic_visibility_on" android:state_checked="true" />
    <item android:drawable="@drawable/ic_visibility_off"  />
</selector>

Вы можете нажать на кнопку с глазом и переключаться между обычным режимом и режимом пароля в редактировании макета (код не требуется). Мне нравится менять это поведение на показать пароль, удерживая переключение пароля вниз.

1
0
749
2

Ответы 2

Вы можете использовать OnTouchListener на кнопке переключения.

  // this goes wherever you setup your button listener:
  button.setOnTouchListener(new OnTouchListener() {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
           //here your onPressed state
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
           //here your onReleased state
        }

        return true;
     }
  });
TextInputLayout автоматически переключает состояние переключения. предполагая, что этот код предотвратит такое поведение, как мне изменить его кнопку переключения?
Afshin 11.04.2018 13:32

Обновлен и добавлен макет.

Afshin 11.04.2018 14:42

для меня он возвращает как ActionEvent Down, так и After. Как этого избежать?

Rohan 17.09.2019 21:46

Конечно. Все возможно с кодом.

Просто сделайте что-нибудь вроде:

button.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, android.view.MotionEvent event) {
        if (event.equals(MotionEvent.ACTION_DOWN)) {
            // enable it
        }

        if (event.equals(MotionEvent.ACTION_UP)) {
            // disable it
        }
        return false;
    }
});

Другие вопросы по теме