Ich habe mich gefragt, ob es möglich ist, das Label immer erweitert zu halten, unabhängig davon, ob es in EditText
Text gibt oder nicht. Ich schaute mich in der Quelle um und es ist eine Verwendung von ValueAnimator
und counter
innerhalb von TextWatcher
, um Änderungen zu animieren oder nicht zu animieren. Vielleicht kann ich eine benutzerdefinierte TextWatcher
mit einer benutzerdefinierten ValueAnimator
auf der EditText
in der TextInputLayout
?
Die aktuelle Version von TextInputLayout
existiert speziell, um eine Sache zu tun - zeige / verberge die Helferbeschriftung, abhängig davon, ob es einen Text in EditText
gibt oder nicht. Was du willst, ist ein anderes Verhalten, also brauchst du ein anderes Widget als TextInputLayout
. Dieser Fall ist der perfekte Kandidat für das Schreiben einer benutzerdefinierten Ansicht, die Ihren Anforderungen entspricht.
Das heißt, Ihre Idee, ein benutzerdefiniertes TextWatcher
auf EditText
zu setzen, funktioniert auch nicht, weil TextInputLayout
nichts von seinen Interna offen legt, die tatsächlich mit den Animationen umgehen - weder updateLabelVisibility()
, setEditText()
, der Zauber Handler
, der die Arbeit oder irgendetwas anderes erledigt. Natürlich wollen wir für so ein Detail nicht den Reflexionspfad gehen, also ...
Verwenden Sie einfach MaterialEditText ! Es hat die folgende Eigenschaft, die genau das tut, was Sie wollen.
met_floatingLabelAlwaysShown : Immer das Floating-Label anzeigen, anstatt es zu animieren. Falsch als Standard.
Die Bibliothek ist ziemlich stabil (ich benutze sie selbst in zwei verschiedenen Projekten) und hat viele Optionen zur Anpassung. Ich hoffe es hilft!
Tags und Links android android-textinputlayout