EditText ajouté n’est pas un TextInputEditText. S’il vous plaît passer à utiliser cette classe à la place

J’utilise un EditText dans un TextInputLayout , mais après avoir mis à jour la bibliothèque de support vers 23.2.0, j’obtiens cet avertissement dans le logcat. Quelle est la différence entre un EditText et un TextInputEditText ? Je n’arrive pas à trouver de documentation pour cela.

Je me demandais aussi ceci, Daniel Wilson a rassemblé la documentation, mais pour un œil non averti, cela ne veut pas dire grand chose. Voici ce dont il s’agit: le “mode extraction” fait référence au type de vue affiché lorsque l’espace est trop petit, par exemple le paysage sur un téléphone. J’utilise le Galaxy S4 avec Google Keyboard comme IME.

Interface utilisateur sans IME visible

Basé sur le focus (sur Description), vous pouvez voir TextInputLayout en action pousser l’indicateur en dehors de l’éditeur. Rien de spécial ici, c’est ce que TextInputLayout est censé faire.

Interface utilisateur sans IME visible

Champ d’édition de l’interface utilisateur vide

En modifiant le nom, vous pouvez voir que l’IME ne vous donne pas une idée de ce que vous modifiez.

Champ d'édition de l'interface utilisateur vide

Modification de l’interface utilisateur de paysage Champ de description vide

En modifiant la description, vous pouvez voir que l’IME vous donne une idée de ce que vous modifiez.

Modification de l'interface utilisateur de paysage Champ de description vide

XML de mise en page

La différence entre les deux champs est leur type EditText VS TextInputEditText . La chose importante ici est que TextInputLayout a l’ android:hint et pas le EditText enveloppé, c’est le cas lorsque les quelques lignes de code Java de TextInputEditText font une grande différence.

Champ Nom

    

Champ de description

    

Il n’y a pas de documentation pour cela, mais la classe est un EditText avec une seule fonctionnalité supplémentaire:

L’utilisation de cette classe nous permet d’afficher un indice dans l’IME en mode ‘extract’.

Plus précisément, il définit le EditorInfo.hintText . Vous remarquerez que dans la classe TextInputLayout , vous pouvez spécifier l’indicateur et son apparence plutôt que dans le widget enfant EditText .

Si vous devez le faire, vous devez utiliser TextInputEditText afin de faire attention aux informations de conseil que vous avez spécifiées dans TextInputLayout .

Ils sont essentiellement la même chose, mais je pense que TextInputEditText a plus de fonctionnalités et peut-être d’atsortingbuts. J’ai changé pour TextInputEditText et tout a fonctionné et ressemblait à la version standard d’ EditText .

Cette question est ancienne, mais j’ai eu ce problème et il suffit de supprimer cette ligne dans mon fichier xml: android: fitsSystemWindows = “true”, et l’erreur a disparu.