web-dev-qa-db-fra.com

Afficher le texte d'assistance sous EditText avec l'indicateur

J'essaie de faire quelque chose sur ces lignes:

 EditText example

Je suis en mesure d'afficher l'indice à l'aide de Android:hint="Email Address" mais je ne peux pas afficher le texte de l'aide - ce sera votre nom d'utilisateur par courrier électronique}

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

        <EditText
            Android:id="@+id/et_username"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="15"
            Android:hint="Username"
            app:et_helper="Username is preferably your registered email"/>

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

Ce que je reçois, c’est seulement et pas _ {le nom d’utilisateur est de préférence votre adresse électronique enregistrée} ci-dessous edittext:

Sortie:

 output

Tous les pointeurs appréciés. Je vous remercie.

14
Amey Shirke

Le meilleur moyen est d'utiliser TextInputLayout. Google l'a introduit dans une nouvelle bibliothèque de design. Pour utiliser TextInputLayout, vous devez ajouter les éléments suivants à vos dépendances build.gradle:

compile 'com.Android.support:design:22.2.0'

Puis utilisez-le dans vos fichiers xml:

<Android.support.design.widget.TextInputLayout
Android:id="@+id/textInputLayout"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">

<EditText
    Android:id="@+id/editText"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:hint="Enter your name"/>
</Android.support.design.widget.TextInputLayout>

Vous pouvez définir votre texte en définissant error true. Bien que ce soit pour montrer des erreurs mais cela convient à votre utilisation. Vous pouvez changer de couleur et de police si vous le souhaitez.

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

 enter image description here

23

Le texte d'assistance n'est pas fourni par TextInputLayout. Cependant, l'article ci-dessous en contient un exemple concret. Il utilise une classe qui s'étend de TextInputLayout en ajoutant HelperText en tant qu'indicateur supplémentaire de la classe, en parallèle de ErrorText.

https://medium.com/@elye.project/material-login-with-helper-text-232472400c15#.vm28p662v

3
Elye

Donc, ce que vous voulez, c'est ceci:

Helper Text

Vous pouvez y parvenir en utilisant cette bibliothèque:

https://github.com/rengwuxian/MaterialEditText

Vous pouvez définir l'attribut "helper text" pour afficher le texte sous la ligne et le "conseil" pour afficher le texte au-dessus de la ligne. Ci-dessous l'exemple de mise en page de l'image ci-jointe

<com.rengwuxian.materialedittext.MaterialEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Password"
        Android:inputType="textPassword"
        app:met_floatingLabel="normal"
        app:met_helperText="Must contain at least 8 characters"
        app:met_helperTextAlwaysShown="true"/>
1
yasirebricks

J'avais une question similaire posée ici . Si vous souhaitez conserver deux vues EditText ensemble fermées verticalement dans LinearLayout, je pense que ce n’est pas possible. Je pense que l’une des solutions consiste à définir l’Android: gravité du haut EditText sur 'bottom' et 'top' sur le EditText inférieur. Mais dans RelativeLayout, cela devrait être facile.

TextInputLayout peut être utilisé si vous souhaitez afficher le texte de conseil (au-dessus de EdiText) même lorsque l'utilisateur le tape. Habituellement, avec l'indication de paramètre EditText, cela ne fonctionnerait pas. Le texte d'indice disparaîtrait une fois la vue focalisée en la touchant. 

0
cgr

Avec Design Support Library 28, une fonctionnalité Texte d'assistance intégrée est ajoutée à TextInputLayout.

 implementation 'com.Android.support:design:28.0.0'

Maintenant, activez l'erreur en utilisant XML ou par programme 

 textInputLayout.isHelperTextEnabled=true
 textInputLayout.error="Email can not be Empty!!!"

De plus, indice et erreur peuvent être utilisés ensemble maintenant !!!

Exemple 

et.setOnFocusChangeListener { v, b ->
            if (b) {
                textInputLayout.helperText = "yourhelperText"

            } else {
                textInputLayout.helperText = null
                if(et.text.toString()==""){    // or any other validation
                    textInputLayout.error="Email can not be Empty!!!"
                }
            }

TextInputLayout | Développeurs Android

EDIT N'oubliez pas d'activer l'erreur et le texte auxiliaire via XML ou par programme.

0
Apoorva Jain