W odniesieniu do nowego TextInputLayout
wydanego przez Google, jak zmienić kolor tekstu pływającej etykiety?
Ustawianie colorControlNormal
, colorControlActivated
, colorControlHighLight
w stylach nie pomaga.
Oto co mam teraz:
W odniesieniu do nowego TextInputLayout
wydanego przez Google, jak zmienić kolor tekstu pływającej etykiety?
Ustawianie colorControlNormal
, colorControlActivated
, colorControlHighLight
w stylach nie pomaga.
Oto co mam teraz:
colorAccent
? Zmieniłem niestandardowy stylcolorAccent
na czarny, a linia nadal odzwierciedlałaby to, co mamcolorControlNormal
w głównym stylu.Odpowiedzi:
Wypróbuj poniższy kod To działa w normalnym stanie
W kodzie TextLabel folderu stylów
Ustawiony na główny motyw aplikacji, działa tylko Podświetl tylko stan
Aktualizacja:
Rozwiązanie
Aktualizacja:
Czy korzystasz z biblioteki komponentów materiałów?
Możesz dodać poniższe linie do głównego motywu
czy też chcesz różne kolory w stanie noraml i stanie aktywowanym oraz z dostosowaniem postępuj zgodnie z poniższym kodem
Dodaj poniższy wiersz do głównego motywu, albo możesz ustawić styl na textinputlayout w swoim pliku xml
źródło
android.view.InflateException: Error inflating class TextView
android:theme
włączenie tego styluTextInputLayout
powodujeInflateException
awarie smartfonów ASUS Zen (i ewentualnie innych urządzeń).ThemeOverlay.AppCompat.Light
pomógł rozwiązać problem awarii na moim Zenfonie ASUS (@friederbluemle)źródło
android:textColorHint="@color/gray" //support 23.0.0
uwidocznił mój kolor tekstu podpowiedzi (domyślnie kolor tekstu podpowiedzi był czarny, niezależnie od ustawionego koloru tekstu podpowiedzi, a jeśli tło jest czarne, tekst jest całkowicie ukrytyZnajdź odpowiedź, użyj
android.support.design:hintTextAppearance
atrybutu, aby ustawić własny wygląd pływającej etykiety.Przykład:
źródło
Namespace 'android.support.design' not bound
. Jakieś sugestie?compile 'com.android.support:design:23.1.1'
do pliku oceny aplikacjiNie trzeba używać
android:theme="@style/TextInputLayoutTheme"
do zmiany pływającego koloru etykiety, ponieważ wpłynie to na cały motyw małego TextView używanego jako etykieta. Zamiast tego możesz użyćapp:hintTextAppearance="@style/TextInputLayout.HintText"
gdzie:Daj mi znać, czy rozwiązanie działa :-)
źródło
Za pomocą biblioteki Material Components można dostosować
TextInputLayout
kolor tekstu podpowiedzi za pomocą (wymaga wersji 1.1.0)W układzie:
app:hintTextColor
atrybut: kolor etykiety, gdy jest zwinięta, a pole tekstowe jest aktywneandroid:textColorHint
atrybut: kolor etykiety we wszystkich innych stanach pól tekstowych (takich jak spoczynkowe i wyłączone)Widget.MaterialComponents.TextInputLayout.*
:Domyślny selektor
android:textColorHint
to:źródło
Ok, więc uznałem tę odpowiedź za bardzo pomocną i dziękuję wszystkim ludziom, którzy się do tego przyczynili. Ale żeby coś dodać. Przyjęta odpowiedź jest rzeczywiście poprawną odpowiedzią ... ALE ... w moim przypadku chciałem zaimplementować komunikat o błędzie pod
EditText
widżetemapp:errorEnabled="true"
i ta pojedyncza linia utrudniła mi życie. wydaje się, że to zastępuje motywandroid.support.design.widget.TextInputLayout
, który wybrałem , który ma inny kolor tekstu zdefiniowany przezandroid:textColorPrimary
.W końcu zdecydowałem się na zastosowanie koloru tekstu bezpośrednio do
EditText
widżetu. Mój kod wygląda mniej więcej tak:styles.xml
I mój widget:
Teraz wyświetla czarny kolor tekstu zamiast
textColorPrimary
białego.źródło
Sugeruję utworzenie motywu stylu dla TextInputLayout i zmianę tylko koloru akcentu. Ustaw element nadrzędny na podstawowy motyw aplikacji:
źródło
W najnowszej wersji biblioteki obsługi (23.0.0+)
TextInputLayout
pobiera następujący atrybut w formacie XML w celu edycji koloru pływającej etykiety:android:textColorHint="@color/white"
źródło
Zamiast odpowiedzi Brahmam Yamani wolę używać Widget.Design.TextInputLayout jako elementu nadrzędnego. Zapewnia to obecność wszystkich wymaganych elementów, nawet jeśli nie wszystkie zostaną nadpisane. W odpowiedzi Yamanisa aplikacja ulegnie awarii z nierozwiązywalnym zasobem, jeśli zostanie wywołane setErrorEnabled (true).
Po prostu zmień styl na następujący:
źródło
W moim przypadku dodałem to ”
app:hintTextAppearance="@color/colorPrimaryDark"
w widżecie TextInputLayout.źródło
error: '#FFFFFF' is incompatible with attribute hintTextAppearance
Aby zmienić kolor podpowiedzi i edytować tekst, podkreśl kolor: colorControlActivated
Aby zmienić kolor licznika znaków: textColorSecondary
Aby zmienić kolor komunikatu o błędzie: colorControlNormal
Aby zmienić odcień przycisku widoczności hasła: colorForeground
Aby uzyskać więcej informacji na temat TextInputLayout, przeczytaj http://www.zoftino.com/android-textinputlayout-tutorial
źródło
Programowo możesz użyć:
Wyjaśnienie:
Uzyskaj wartość koloru int z zasobu kolorów (sposób prezentacji kolorów rgb używanych przez Androida). Napisałem ColorEnabled, ale tak naprawdę powinno być, dla tej odpowiedzi ColorHintExpanded & ColorViewCollapsed. W każdym razie jest to kolor, który zobaczysz, gdy podpowiedź widoku „TextInputLayout” będzie w stanie rozwiniętym lub zwiniętym; ustawisz go, używając następnej tablicy w funkcji „setDefaultHintTextColor” widoku. Odwołanie: Odwołanie do TextInputLayout - wyszukaj na tej stronie metodę „setDefaultHintTextColor”, aby uzyskać więcej informacji
Patrząc na powyższe dokumenty, możesz zobaczyć, że funkcje ustawiają kolory dla rozwiniętej i zwiniętej wskazówki za pomocą ColorStateList.
Dokumenty ColorStateList
Aby utworzyć ColorStateList, najpierw utworzyłem macierz ze stanami, które chcę, w moim przypadku state_enabled & state_disabled (których w TextInputLayout jest równa podpowiedzi rozwiniętej i podpowiedzi zwiniętej [nie pamiętam, w jakiej kolejności lol, w każdym razie znalazłem ją tylko wykonuję test]). Następnie przekazuję konstruktorowi ColorStateList tablice z wartościami całkowitymi zasobów kolorów, kolory te mają zgodność z macierzą stanów (każdy element w tablicy kolorów odpowiada odpowiedniej tablicy w macierzy stanów w tej samej pozycji). Tak więc pierwszy element tablicy kolorów będzie użyty jako kolor dla każdego stanu w pierwszej tablicy macierzy stanów (w naszym przypadku tablica ma tylko 1 element: stan włączony = stan rozwinięty wskazówki dla TextInputLayut). Ostatnie stany rzeczy mają wartości dodatnie / ujemne, a ty masz tylko wartości dodatnie,
Mam nadzieję, że to jest pomocne. Pa, miłego kodowania (:
źródło
powinieneś tutaj zmienić kolor
źródło
Teraz po prostu używasz
colorAccent
icolorPrimary
będzie działać idealnie.źródło
colorPrimary
ten motyw, aby ustawić kolor podpowiedzi i dolnej linii. Chociaż naprawdę powinno być jakieś wyjaśnienie / kod, który mógłby to pokazać w tej odpowiedziRozwiązuję problem. To jest układ :
To jest styl:
Powinieneś użyć swojego motywu w aplikacji:
źródło
aby zmienić kolor etykiety tekstowej, gdy się na niej skupiasz. tzn. wpisując go. musisz dodać określić
Tylko uwaga: musisz dodać wszystkie te implementacje do głównego tematu.
źródło
Jego działa dla mnie ..... dodaj kolor podpowiedzi w TextInputLayout
źródło
Próbowałem przy użyciu Androida: textColorHint w android.support.design.widget.TextInputLayout działa dobrze.
źródło
dodaj to do stylów i ustaw TextInputLayout Theam na App2 i będzie działać;)
źródło
res / wartości / styles.xml
źródło
Można użyć,
app:hintTextColor
jeśli używaszcom.google.android.material.textfield.TextInputLayout
, spróbuj tegoźródło
Wypróbuj poniższy kod To działa w normalnym stanie
W kodzie TextLabel folderu stylów
źródło
Z dokumentacji:
Więc ustawiłem
android:hint
iapp:hintTextColor
włączałemTextInputLayout
, a nie włączałemTextInputEditText
i działało.źródło
Bo trzeba dodać
colorControlNormal
,colorControlActivated
,colorControlHighLight
elementy do tematu głównego aplikacji:źródło