Поиск…


Вступление

TextInputLayout был введен для отображения плавающей метки в EditText. EditText должен быть обернут TextInputLayout для отображения плавающей метки.

замечания

TextInputLayout - это макет, который обертывает EditText (или потомок), чтобы показать плавающий метку, когда подсказка скрыта из-за ввода пользователем текста. Кроме того, TextInputLayout позволяет отображать сообщение об ошибке ниже EditText .

Убедитесь, что в файл build.gradle вашего приложения добавлена build.gradle зависимость:

compile 'com.android.support:design:25.3.1'

Основное использование

Это основное использование TextInputLayout .
Обязательно добавьте зависимость в файле build.gradle как описано в разделе примечаний.

Пример:

 <android.support.design.widget.TextInputLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">

     <EditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="@string/username"/>
 
 </android.support.design.widget.TextInputLayout>

Обработка ошибок

Вы можете использовать TextInputLayout для отображения сообщений об ошибках в соответствии с рекомендациями по разработке материалов с использованием методов setError и setErrorEnabled .

Чтобы показать ошибку ниже использования EditText:

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");

Чтобы включить ошибку в TextInputLayout вы можете использовать app:errorEnabled="true" в xml или til.setErrorEnabled(true); как показано выше.

Вы получите:

введите описание изображения здесь

Добавление подсчета символов

TextInputLayout имеет счетчик символов для EditText, определенных внутри него.
Счетчик будет отображаться ниже EditText.

Просто используйте setCounterEnabled() и setCounterMaxLength :

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);

или app:counterEnabled и app:counterMaxLength в xml.

<android.support.design.widget.TextInputLayout
    app:counterEnabled="true"
    app:counterMaxLength="15">

    <EditText/>

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

Переключатели просмотров

С типом ввода пароля вы также можете включить значок, который может отображать или скрывать весь текст, используя атрибут passwordToggleEnabled .

Вы также можете настроить тот же параметр по умолчанию, используя следующие атрибуты:

  • passwordToggleDrawable : изменить значок глаз по умолчанию
  • passwordToggleTint : применить оттенок к видимости пароля для переключения.
  • passwordToggleTintMode : указать режим наложения, используемый для применения фонового оттенка.

Пример:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleContentDescription="@string/description"
        app:passwordToggleDrawable="@drawable/another_toggle_drawable"
        app:passwordToggleEnabled="true">

            <EditText/>

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

TextInputEditText

TextInputEditText - это EditText с дополнительным исправлением, чтобы отображать подсказку в IME в режиме «extract» .

Режим Extract - это режим, который переключает редактор клавиатуры, когда вы нажимаете EditText, когда пространство слишком мало (например, пейзаж на смартфоне).
В этом случае, используя EditText во время редактирования текста, вы можете видеть, что IME не дает вам намека на то, что вы редактируете

TextInputEditText исправляет эту проблему, предоставляя текст подсказки, в то время как IME устройства пользователя находится в режиме Extract.

Пример:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

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

Настройка внешнего вида TextInputLayout

Вы можете настроить внешний вид TextInputLayout и встроенного EditText , указав пользовательские стили в ваших styles.xml . Определенные стили могут быть добавлены как стили или темы в TextInputLayout .

Пример настройки отображения подсказки:

styles.xml :

<!--Floating label text style-->  
<style name="MyHintStyle" parent="TextAppearance.AppCompat.Small">  
    <item name="android:textColor">@color/black</item>
</style>

<!--Input field style-->  
<style name="MyEditText" parent="Theme.AppCompat.Light">  
    <item name="colorControlNormal">@color/indigo</item>
    <item name="colorControlActivated">@color/pink</item>
</style>  

Чтобы применить стиль, обновите TextInputLayout и EditText следующим образом.

<android.support.design.widget.TextInputLayout  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextAppearance="@style/MyHintStyle">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/Title"
        android:theme="@style/MyEditText" />

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

Пример настройки цвета акцента TextInputLayout . Цвет акцента влияет на цвет базовой линии EditText и цвет текста для плавающего текста подсказки:

styles.xml :

<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
    <item name="colorAccent">@color/primary</item>
</style> 

файл макета:

<android.support.design.widget.TextInputLayout
            android:id="@+id/textInputLayout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/TextInputLayoutWithPrimaryColor">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/textInputEditText_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/login_hint_password"
                android:inputType="textPassword" />

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow