Отключить переключатель пароля ImageButton, когда TextInputEditText отключен

Когда для атрибута app:passwordToggleEnabled TextInputLayout установлено значение true, а для атрибута android:enabled TextInputEditText установлено значение false, как можно предотвратить нажатие кнопки переключения пароля ImageButton?

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="24dp"
    android:hint="@string/password"
    app:hintAnimationEnabled="true"
    app:passwordToggleEnabled="true">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:maxLength="32"
        android:maxLines="1"
        android:enabled="false"/>

</com.google.android.material.textfield.TextInputLayout>

Демонстрационная версия

Это ошибка или ожидаемое поведение?


person Justin Papez    schedule 22.02.2019    source источник
comment
Я не уверен, но я думаю, что вы должны setEnabled TextInputLayout в false, а не TextInputEditText   -  person Taslim Oseni    schedule 23.02.2019
comment
Дерьмо. Это было упущением с моей стороны. Ранее я пытался включить настройку с помощью атрибута xml в TextInputLayout только для того, чтобы понять, что он не существует. К сожалению, я не вернулся и не проверил, был ли сеттер Java. Спасибо за помощь, ваш комментарий решил мою проблему.   -  person Justin Papez    schedule 23.02.2019
comment
Рад, что смог помочь :-)   -  person Taslim Oseni    schedule 23.02.2019


Ответы (1)


Как я уже упоминал в комментариях, простым решением вашей проблемы было бы установить для TextInputLayout значение false, а не для TextInputEditText. Поскольку TextInputLayout содержит TextInputEditText, весь макет будет отключен. Вот небольшая демонстрация:

TextInputLayout textInputLayout = findViewById(R.id.textInputLayout);

if(someCondition){
    textInputLayout.setEnabled(false);
}

Я надеюсь, что это поможет .. Веселого кодирования!

person Taslim Oseni    schedule 23.02.2019