2016-01-30 8 views

Odpowiedz

7

Obecna wersja TextInputLayout istnieje specjalnie po to, aby zrobić jedną rzecz - pokazać/ukryć etykietę pomocnika w zależności od tego, czy jest jakiś tekst w numerze EditText, czy nie. To, czego chcesz, to inne zachowanie, więc potrzebujesz innego widżetu niż TextInputLayout. Ten przypadek jest idealnym kandydatem do napisania niestandardowego widoku, który będzie pasował do twoich potrzeb.

Powiedział, że Twój pomysł ustawienia niestandardowe TextWatcher do EditText nie będzie działać albo dlatego TextInputLayout nie robi nic na jego wewnętrzne faktycznie obsłużyć animacje narażać - ani updateLabelVisibility(), setEditText(), Magic Handler że działa albo coś innego. Oczywiście na pewno nie chcemy pójść ścieżką do refleksji, żeby zobaczyć taki detal, więc ...

Po prostu użyj MaterialEditText! Ma następującą właściwość, która robi dokładnie to, co chcesz.

met_floatingLabelAlwaysShown: Zawsze pokazać etykietę pływający, zamiast animowanie go in/out. Fałsz jako domyślny.

Biblioteka jest dość stabilna (sam korzystam z niej w dwóch różnych projektach) i ma wiele opcji do dostosowania. Mam nadzieję, że to pomoże!

+0

dobry połów w odniesieniu do materiału EditText lib, widziałem, że lib wcześniej, ale myślę, że mogę ekstrapolować pewnej logiki, aby utworzyć niestandardowy składnik specjalnie dla mojego przypadku użycia: thumbs_up: – AndyRoid

+0

Tak, jak powiedziałem w moim pierwszym akapicie - jest to idealny kandydat do niestandardowego widoku tekstu. Powodzenia! – Vesko

+0

Zgadzam się z tym rozwiązaniem, thx @Vesko – wanz

7

Dla mnie wzorem wsparcia 23.3.0 działa w użyciu

   <android.support.design.widget.TextInputLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="wow such hint" 
       app:hintEnabled="true" 
       app:hintAnimationEnabled="false" 
       /> 
+0

To nie działa dla wersji v.2.0.2; Etykieta nie jest rozwinięta, gdy tekst jest pusty. –