TextInputLayout n’affiche pas l’indicateur EditText avant que l’utilisateur ne s’y concentre

J’utilise la bibliothèque de support Android Design récemment publiée pour afficher des étiquettes flottantes avec EditTexts. Mais je suis confronté au problème que l’indice sur le texte d’édition ne montre pas quand l’interface utilisateur est rendue, mais je vois l’indice après que je me concentre sur les EditTexts.

Ma mise en page est la suivante:

                

J’ai également essayé de définir un indice pour TextInputLayout utilisant la méthode setHint mais pas de chance.

 mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout); mNameTextInputLayout.setErrorEnabled(true); mNameTextInputLayout.setHint(feedBackerNameET.getHint()); mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout); mEmailTextInputLayout.setErrorEnabled(true); mEmailTextInputLayout.setHint(feedBackerEmail.getHint()); mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout); mBodyTextInputLayout.setErrorEnabled(true); mBodyTextInputLayout.setHint(feedBackBody.getHint()); 

Mettre à jour:

Ceci est un bug qui a été corrigé dans la version 22.2.1 de la bibliothèque.

Réponse originale:

Comme mentionné par @shkschneider, ceci est un bogue connu . L’utilisateur Github @ ljubisa987 a récemment publié une Gist pour une solution de contournement:

https://gist.github.com/ljubisa987/e33cd5597da07172c55d

Comme indiqué dans les commentaires, la solution ne fonctionne que sur Android Lollipop et versions antérieures. Il ne fonctionne pas sur l’aperçu Android M.

C’est un bogue connu de la bibliothèque Android Design. Il a été accepté et atsortingbué .

Donc, vous devriez avoir cela corrigé dans la prochaine version de la bibliothèque Android Design.

En attendant, vous pouvez regarder le suivi des problèmes pour trouver un correctif qui pourrait être publié là-bas, mais je n’en connais pas pour le moment.

Et oui, cela n’affecte que Lollipop et au-dessus.

Cela fonctionne pour moi dans Design Library 23.1.1:

Définissez la couleur de conseil dans les atsortingbuts xml de TextInputLayout:

   

Ce problème est résolu dans la version 22.2.1

vous devez utiliser android.support.v7.widget.AppCompatEditText comme EditText et définir android:hint comme ci-dessous

    
     

Utilisez cet extrait de code.Assurez-vous que votre activité est AppCompatActivity. Et la dépendance est également avec les dernières versions

 comstack 'com.android.support:appcompat-v7:22.2.0' comstack 'com.android.support:design:22.2.0' 

Mettez à jour le studio Android à la dernière version. voir la sortie ici

Si vous configurez votre indice EditText par programmation, cela ne fonctionnerait pas! Vous devez définir l’indicateur sur le TextInputLayout lui-même.

 TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.usernameTextInputLayout); textInputLayout.setHint(getSsortingng(R.ssortingng.username_hint)); 

Voici le XML au cas où vous vous poseriez la question:

     

Ce problème est résolu dans la v23.0.1 de la bibliothèque de conception du support. J’ai également mis à jour mon appcompat-v7 à 23.0.1 , comstackSdkVersion à 23 & buildToolsVersion à 23.0.1 dans build.gradle .

 android { comstackSdkVersion 23 buildToolsVersion "23.0.1" } dependencies { comstack 'com.android.support:appcompat-v7:23.0.1' comstack 'com.android.support:design:23.0.1' } 

J’ai résolu mon problème avec ce code:

 new Handler().postDelayed( new Runnable() { @Override public void run() { TextInputLayout til = (TextInputLayout) someParentView.findViewById(R.id.til); til.setHint("Your Hint Text"); til.bringToFront(); } }, 10); 

La clé ici est le bringToFront . Il oblige TextInputLayout à refaire son dessin, ce qui est différent de faire invalidate() . Si vous essayez d’afficher TextInputLayout sur une view comportant des animations ou des tranistions , vous devez exécuter le code ci-dessus à la fin de l’ animation ou de la transition . Assurez-vous simplement que le code ci-dessus s’exécute sur le thread interface utilisateur.

On dirait que ce problème apparaît lorsque vous définissez onFousListener sur EditText – essayez d’étendre EditText et de prendre en charge plusieurs onFocusListeners

Définissez la couleur de conseil en contraste avec l’arrière-plan EditText.

#FF424242

En relation:
setHintTextColor () dans EditText
Modifier la couleur de conseil EditText lors de l’utilisation de TextInputLayout
Comment changer la couleur de l’étiquette flottante de TextInputLayout

Problème résolu: Allez à build.gradle de votre application et vérifiez la bibliothèque de conception. comstack ‘com.android.support:design:22.2.1’ Il devrait être 22.2.1 ou plus récent.

J’ai trouvé quelque chose de différent.

Lorsque vous définissez le style du fragment,

f1.setStyle (DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_DeviceDefault_Light);

Le bogue était parti quand j’ai essayé différents styles que “Theme_DeviceDefault_Dialog”.

Essaie.

Le problème est la couleur de l’indice. Il devient blanc lorsque vous tapez quelque chose. Veuillez changer la couleur de conseil ou changer la couleur de fond. Vous verrez l’indicateur lors de la frappe.

Il y a une solution simple à cela car cela a fonctionné pour moi

     

Ajoutez simplement android: theme = “@ style / Base.TextAppearance.AppCompat” à TextEditLayout et cela devrait fonctionner et vous pourrez changer le thème selon vos besoins.

Ajoutez simplement: android:hint="your_hint" pour TextInputLayout .