Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

TextInputEditText

В одном из обновлений 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. На скриншоте старый вариант.

TextInputEditText

Справа видим значок глаза. Нажимаем на него, и пароль весь как на ладони.

TextInputEditText

Можно попробовать заменить значок глаза на свой через атрибут app:passwordToggleDrawable="@drawable/another_toggle_drawable" (я не пробовал).

Данный режим включится при использовании в android:inputType значений textPassword, numberPassword, textWebPassword, не действует для textVisiblePassword.

Обратите также внимание на атрибуты у TextInputLayout: passwordToggleContentDescription, passwordToggleDrawable (см. выше), passwordToggleEnabled, passwordToggleTint, passwordToggleTintMode - разберитесь с ними сами. Естественно, они также доступны и программным способом.

Реклама