Próbowałem zmienić kolor pływającego przycisku materiału, ale bez powodzenia.
<android.support.design.widget.FloatingActionButton
android:id="@+id/profile_edit_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_mode_edit_white_24dp" />
Próbowałem dodać:
android:background="@color/mycolor"
lub za pomocą kodu:
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));
lub
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
Ale żadne z powyższych nie zadziałało. Próbowałem również rozwiązań w proponowanym duplikacie pytania, ale żadne z nich nie działa; przycisk pozostał zielony, a także stał się kwadratem.
PS Byłoby również miło wiedzieć, jak dodać efekt tętnienia, też tego nie rozumiem.
Odpowiedzi:
Jak opisano w dokumentacji , domyślnie przyjmuje zestaw kolorów w styles.xml atrybutu colorAccent .
Jeśli chcesz zmienić kolor
Jak wspomniano w komentarzach @Dantalian, jeśli chcesz zmienić kolor ikony w Bibliotece wsparcia projektowania do wersji 22 (włącznie) , możesz użyć
W przypadku biblioteki wsparcia projektowania od wersji 23 można użyć:
Również w
androidX
bibliotekach musisz ustawić granicę 0dp w swoim układzie xml:źródło
Odpowiedź Vijet Badigannavara jest poprawna, ale korzystanie z niej
ColorStateList
jest zwykle skomplikowane i nie powiedział nam, jak to zrobić. Ponieważ często skupiamy się na zmianieView
koloru w stanie normalnym i wciśniętym, dodam więcej szczegółów:Jeśli chcesz zmienić
FAB
kolor w normalnym stanie, możesz po prostu pisaćJeśli chcesz zmienić
FAB
kolor w stanie wciśniętym, dzięki Design Support Library 22.2.1 możesz po prostu pisaćPo ustawieniu tego atrybutu, po naciśnięciu i przytrzymaniu
FAB
, zmarszczka z kolorem pojawi się w punkcie styku i ujawni się na całej powierzchniFAB
. Zauważ, że nie zmieniFAB
koloru w normalnym stanie. Poniżej API 21 (Lollipop) nie ma efektu tętnienia, aleFAB
kolor nadal się zmienia po naciśnięciu.Wreszcie, jeśli chcesz zaimplementować bardziej złożony efekt dla stanów, powinieneś głęboko zagłębić się
ColorStateList
, oto pytanie SO omawiające to: Jak programowo utworzyć ColorStateList? .AKTUALIZACJA: Dzięki za komentarz @ Kaitlyn. Aby usunąć obrys FAB przy użyciu backgroundTint jako jego koloru, możesz ustawić
app:borderWidth="0dp"
w swoim pliku xml.źródło
app:borderWidth
programowo? DziękiFloatingActionButton
, obawiam się, że nie można go teraz ustawić programowo, ponieważ nie ma seteramBorderWidth
.Jak zauważył Vasil Valchev w komentarzu, jest to prostsze niż się wydaje, ale istnieje subtelna różnica, której nie zauważyłem w moim pliku XML.
Zauważ, że to:
i nie
źródło
android:backgroundTint=""
pochodzi z poziomu 21 interfejsu API i jest częścią projektu materiału Lollipop i zostanie zignorowany poniżej Lollipop. Również nie zmieniaFAB
całkowicie koloru, ponieważ nie jest to jednolity kolor. Musisz użyć tego,app:
aby działał.android:color
spowodowało awarię mojej aplikacji i doprowadzało mnie to do szału! Dzięki za uratowanie mojej aplikacji i resztki mojego zdrowia psychicznego ;-)jeśli spróbujesz zmienić kolor FAB za pomocą aplikacji, wystąpi jakiś problem. ramka przycisku ma inny kolor, więc co musisz zrobić:
i w kodzie ustaw kolor:
źródło
po prostu użyj,
nie używaj,
źródło
FAB jest pokolorowany na podstawie twojego
colorAccent
.źródło
źródło
Inne rozwiązania mogą działać. To 10-funtowe podejście goryla ma tę zaletę, że ma szerokie zastosowanie w tym i podobnych przypadkach:
Styles.xml:
twój układ xml:
źródło
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Może brakuje mi punktu w pliku styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
ale ten solutin nie działa dla mnie tak czy inaczej ...Dokument sugeruje, że domyślnie przyjmuje @ kolor / akcent. Ale możemy zastąpić to kodem za pomocą
Pamiętaj też
Minimalna wersja interfejsu API do korzystania z tej biblioteki to 15, więc musisz ją zaktualizować! jeśli nie chcesz tego zrobić, musisz zdefiniować niestandardową rysownię i ozdobić ją!
źródło
Zmiana koloru tła pływającego przycisku akcji za pomocą poniżej linii
Zmiana koloru ikony pływającego przycisku akcji
źródło
Dzięki autouzupełnianiu. Miałem szczęście po kilku trafieniach i próbach:
- lub - (oba są w zasadzie to samo)
To zadziałało dla mnie w wersji API 17 z biblioteką projektową 23.1.0.
źródło
Mam ten sam problem i wszystko porywa mi włosy. Dzięki za to https://stackoverflow.com/a/35697105/5228412
Co możemy zrobić..
działa dobrze dla mnie i życzę innym, którzy tu dotrą.
źródło
Pamiętaj, że dodajesz kolory w res / wartości / color.xml i dołączasz atrybut do swojej fabryki
źródło
W przypadku motywu materiału i komponentów materiału
FloatingActionButton
domyślnie przyjmuje on zestaw kolorów wstyles.xml
atrybuciecolorSecondary
.app:backgroundTint
atrybutu w xml:Możesz użyć
fab.setBackgroundTintList();
Możesz dostosować swój styl za pomocą
<item name="backgroundTint">
atrybutumaterialThemeOverlay
atrybutu, aby zastąpić domyślne kolory tylko dla niektórych komponentów:źródło
Nowe mapowanie atrybutów motywu dla przycisku akcji swobodnej w materiale 1.1.0
W motywie aplikacji:
źródło
Korzystając z powiązania danych , możesz zrobić coś takiego:
Zrobiłem bardzo prosty przykład
źródło
Zrobiłem to tak: Android: background = "@ color / colorAccent" Idę do folderu res, następnie klikam na wartości folderu, a następnie na colors.xml w colors.xml Po prostu zmieniam kolor colorAccent i nazywam to w Androidzie: tło i gotowe
źródło
Chodzi nam o to, że zanim ustawisz kolor na przycisku, ważne jest, aby pracować nad wartością, którą chcesz dla tego koloru. Możesz więc przejść do wartości> kolor. Znajdziesz domyślne, ale możesz również tworzyć kolory, kopiując je i wklejając, zmieniając kolory i nazwy. Następnie ... kiedy zmienisz kolor pływającego przycisku (w activity_main), możesz wybrać ten, który stworzyłeś
Przykład - kod wartości> kolory z domyślnymi kolorami + 3 kolejne kolory, które utworzyłem:
Teraz mój Floating Action Button z kolorem, który stworzyłem i nazłem „corPar”:
To zadziałało dla mnie. Powodzenia!
źródło
Jeśli masz pływający przycisk akcji bez rysowania, możesz zmienić odcień programowo, używając:
źródło
dodaj kolory w pliku color.xml, a następnie dodaj ten wiersz kodu ...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));
źródło
Możesz użyć tego kodu, jeśli chcesz programowo zmienić kolor
źródło
posługiwać się
app: backgroundTint = "@ color / orange" w
źródło
w przypadku projektowania materiałów właśnie zmieniłem kolor pływającego przycisku akcji w ten sposób. Dodaj dwa poniższe wiersze w swoim pływającym przycisku działania xml. I zrobione,
źródło
w Kotlinie:
źródło