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?
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>
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>
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>
<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);
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
.
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.
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>