Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
В одном из обновлений Android Support Library 24.2.0 появилась интересная возможность использовать новый компонент android.support.design.widget.TextInputEditText, построенный на основе AppCompatEditText, который в свою очередь является родственником стандартного EditText.
Сейчас является частью Material Design:
implementation 'com.google.android.material:material:1.5.0'
Компонент специально разработан для работы в связке с TextInputLayout.
Особый интерес представляет режим ввода пароля.
На панели инструментов компонента пока нет, поэтому пишем вручную.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleContentDescription="description"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Пароль"
android:inputType="textPassword" />
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Никакого кода писать не будем, а сразу запустим пример. Начинаем вводить пароль. Как обычно, вводимый символ сначала показывается, а потом заменяется на символ точки. Раньше использовался цвет colorAccent для подсказок, сейчас colorPrimary. На скриншоте старый вариант.
Справа видим значок глаза. Нажимаем на него, и пароль весь как на ладони.
Можно попробовать заменить значок глаза на свой через атрибут app:passwordToggleDrawable="@drawable/another_toggle_drawable" (я не пробовал).
Данный режим включится при использовании в android:inputType значений textPassword, numberPassword, textWebPassword, не действует для textVisiblePassword.
Обратите также внимание на атрибуты у TextInputLayout: passwordToggleContentDescription, passwordToggleDrawable (см. выше), passwordToggleEnabled, passwordToggleTint, passwordToggleTintMode - разберитесь с ними сами. Естественно, они также доступны и программным способом.