web-dev-qa-db-fra.com

Comment utiliser TextInputLayout dans la nouvelle bibliothèque de conceptions Android

Récemment, Google a introduit la nouvelle bibliothèque de conception Android, qui explique comment utiliser le champ TextInputLayout pour activer la fonction de conseil flottant de EditText.

Peu de conseils sont disponibles ici .

Cette page dit

vous pouvez maintenant l'envelopper dans un TextInputLayout

Mais aucune idée car la prédiction intelligente (Ctrl + ESPACE) ne prédit aucun attribut à TextInputLayout. Donc mes questions sont:

Comment pouvons-nous obtenir le EditText sous-jacent à ce composant?

Comment pouvons-nous obtenir des données de EditText?

40
Kamalanathan

TextInputLayout étend ViewGroup classe . Ce qui signifie que vous devez envelopper votre EditText dans une TextInputLayout.

<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="hint"
        Android:id="@+id/editText1" />

</Android.support.design.widget.TextInputLayout>
52
siriscac

Ceci est défini dans Design Support Library sous "Étiquettes flottantes pour l'édition de texte".

     <Android.support.design.widget.TextInputLayout
            Android:id="@+id/name_et_textinputlayout"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="@dimen/activity_vertical_margin">

            <EditText
                Android:id="@+id/FeedBackerNameET"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:hint="hinttext"
                Android:inputType="textPersonName|textCapWords" />
     </Android.support.design.widget.TextInputLayout>
4
anand krish

Enroulez la TextInputLayout autour de TextInputEditText au lieu de EditText.

Le fait d’emballer EditText a un problème en mode paysage. Reportez-vous à cet article pour plus de détails.

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

     <Android.support.design.widget.TextInputEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="hint"
        Android:id="@+id/editText1" />

</Android.support.design.widget.TextInputLayout>
3
Elye
<Android.support.design.widget.TextInputLayout
    Android:id="@+id/til_message"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <EditText
        Android:id="@+id/et_message"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="@string/type_message"
        Android:maxLines="5"/>

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

le conseil se déplacera automatiquement une fois que vous aurez commencé à taper le texte modifié et que les erreurs qui apparaissent en dessous de l’erreur de modification du texte modifié sur la disposition de saisie de texte ne sont pas associées au texte modifié.

tilMessage.setError("Message field is empty!");

désactiver l'erreur

tilMessage.setErrorEnabled(false);
1
Cherry admin

Pour que cela fonctionne bien, vous devriez laisser le thème de votre application s'étendre du thème Theme.AppCompat (ou de son descendant), comme celui de Theme.AppCompat.Light.NoActionBar.

1
xiaoweiz

La bonne façon ...

<Android.support.design.widget.TextInputLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:padding="10dp">

            <Android.support.design.widget.TextInputEditText
                Android:id="@+id/card_id_edit_text"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:hint="@string/form_card_id_text"
                Android:inputType="number"
                Android:maxLength="10"/>
        </Android.support.design.widget.TextInputLayout>

Si vous utilisez EditText comme un enfant de TextInputLayout, vous verrez ce message dans Android Monitor:

I/TextInputLayout: EditText ajouté n'est pas un TextInputEditText. Veuillez passer à utiliser cette classe à la place.

1
Brayan Loayza

Nous pouvons utiliser AppCompactEditText également pour ce besoin d’ajouter un support: appcompat in gradle

 <Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="20dp">

    <Android.support.v7.widget.AppCompatEditText
        Android:id="@+id/et_name"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="@string/hint"
        Android:maxLength="100"
        Android:inputType="textNoSuggestions"
        Android:textColor="@color/colorPrimary"
        Android:textSize="@dimen/font_size_large" />

</Android.support.design.widget.TextInputLayout>
0
Naveen Kumar M