Recherche…


Introduction

TextInputLayout a été introduit pour afficher l'étiquette flottante sur EditText. EditText doit être encapsulé par TextInputLayout afin d'afficher l'étiquette flottante.

Remarques

TextInputLayout est une mise en page qui EditText un EditText (ou un descendant) pour afficher une étiquette flottante lorsque le conseil est masqué en raison de la saisie de texte par l'utilisateur. De plus, TextInputLayout vous permet d'afficher un message d'erreur sous le EditText .

Assurez-vous que la dépendance suivante est ajoutée au fichier build.gradle votre application sous les dépendances:

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

Utilisation de base

C'est l'utilisation de base de TextInputLayout .
Veillez à ajouter la dépendance dans le fichier build.gradle comme décrit dans la section remarques.

Exemple:

 <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>

Gestion des erreurs

Vous pouvez utiliser TextInputLayout pour afficher les messages d'erreur conformément aux directives de conception de matériaux à l'aide des méthodes setError et setErrorEnabled .

Pour afficher l'erreur sous l'EditText, utilisez:

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

Pour activer l'erreur dans TextInputLayout vous pouvez utiliser app:errorEnabled="true" dans xml ou til.setErrorEnabled(true); Comme montré ci-dessus.

Vous obtiendrez:

entrer la description de l'image ici

Ajouter un compte de caractères

Le TextInputLayout a un compteur de caractères pour un EditText défini dans celui-ci.
Le compteur sera rendu en dessous du EditText.

Utilisez simplement les setCounterEnabled() et setCounterMaxLength :

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

ou les app:counterEnabled et app:counterMaxLength dans le app:counterMaxLength XML.

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

    <EditText/>

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

La visibilité du mot de passe bascule

Avec un type de mot de passe en entrée, vous pouvez également activer une icône pouvant afficher ou masquer l'intégralité du texte à l'aide de l'attribut passwordToggleEnabled .

Vous pouvez également personnaliser la même valeur par défaut en utilisant ces attributs:

Exemple:

<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

Le TextInputEditText est un EditText avec un correctif supplémentaire pour afficher un indice dans l'IME en mode 'extract' .

Le mode d'extraction est le mode sur lequel l'éditeur de clavier bascule lorsque vous cliquez sur un EditText lorsque l'espace est trop petit (par exemple, paysage sur un smartphone).
Dans ce cas, en utilisant un EditText pendant que vous éditez le texte, vous pouvez voir que l’IME ne vous donne pas une idée de ce que vous modifiez.

TextInputEditText résout ce problème en fournissant un indice lorsque l'IME de l'appareil de l'utilisateur est en mode Extract.

Exemple:

<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>

Personnalisation de l'apparence de TextInputLayout

Vous pouvez personnaliser l'apparence de TextInputLayout et de son EditText incorporé en définissant des styles personnalisés dans votre styles.xml . Les styles définis peuvent être ajoutés en tant que styles ou thèmes à votre TextInputLayout .

Exemple pour personnaliser l'apparence de l'indice:

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>  

Pour appliquer le style, mettez à jour votre TextInputLayout et EditText comme suit

<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>  

Exemple pour personnaliser la couleur d'accent de TextInputLayout . La couleur d'accentuation affecte la couleur de la ligne de base du texte EditText et la couleur du texte du conseil flottant:

styles.xml :

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

fichier de mise en page:

<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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow