Przede wszystkim nie jest to duplikat jak w Jak zmienić kolor tła paska stanu Androida
Jak zmienić kolor paska stanu, który powinien być taki sam jak na pasku nawigacyjnym.
Chcę, aby kolor paska stanu był taki sam jak kolor paska nawigacji
android
android-navigation
android-statusbar
codercat
źródło
źródło
android:statusBarColor
. Możesz to po prostu dodaćvalues-v21/styles.xml
.Odpowiedzi:
Android 5.0 Lollipop wprowadził motyw Material Design, który automatycznie zmienia kolor paska stanu na podstawie
colorPrimaryDark
wartości motywu.Jest to obsługiwane na urządzeniach przed wersją Lollipop dzięki bibliotece support-v7-appcompat od wersji 21. Blogpost na temat wsparcia appcompat v21 od Chrisa Banesa
Przeczytaj więcej na temat motywu materiałowego na oficjalnej stronie programistów Androida
źródło
Aktualizacja:
Lizak:
Dodano w API 21 poziom
Android Lollipop przyniósł ze sobą możliwość zmiany koloru paska stanu w aplikacji, aby uzyskać bardziej wciągające wrażenia użytkownika i dostosować się do Google
Material Design Guidelines
.Oto jak możesz zmienić kolor paska stanu za pomocą nowej
window.setStatusBarColor
metody wprowadzonej wAPI level 21
.Zmiana koloru paska stanu wymaga również ustawienia dwóch dodatkowych flag w oknie; musisz dodać
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
flagę i wyczyścićFLAG_TRANSLUCENT_STATUS
flagę.Kod roboczy:
...
Referencje dla programistów oficjalnych: oficjalnych setStatusBarColor (int)
Przykład: projektowanie materiałów wszędzie
Chris Banes Blog - appcompat v21: materiał projektowy dla urządzeń sprzed wersji Lollipop!
transitionName
Na tle widok będzieandroid:status:background
.źródło
android:statusBarColor
w swoimvalues-v21/styles.xml
pliku na androiddocs.com/training/material/theme.html w podobny sposób<item name="android:statusBarColor">@color/primary_color</item>
Umieść to swoje wartości-v21 / styles.xml, aby włączyć to w Lollipop:
źródło
targeApi
atrybut, jeśli chcesz zachować pojedynczy plik stylu. Przeczytaj moją odpowiedź w celach informacyjnych stackoverflow.com/a/48565459/4291272jest to bardzo łatwy sposób na zrobienie tego bez żadnej biblioteki: jeśli wersja systemu operacyjnego nie jest obsługiwana - w KitKat - nic się nie dzieje. robię te kroki:
potem zrobiłem tę metodę:
potrzebujesz również tych dwóch metod, aby uzyskać działanie Pasek i wysokość paska stanu:
jedyną rzeczą, której potrzebujesz, jest ta linia, aby ustawić kolor paska stanu:
źródło
Jak powiedział @Niels, musisz umieścić w wartości-v21 / styles.xml:
Ale dodaj,
tools:targetApi="lollipop"
jeśli chcesz single styles.xml, na przykład:źródło
Cóż, rozwiązanie Izhar było w porządku, ale osobiście staram się unikać kodu, który wygląda następująco:
Nie lubię też powielać kodu. W twojej odpowiedzi muszę dodać taki wiersz kodu we wszystkich działaniach:
Więc wziąłem rozwiązanie Izhar i użyłem XML, aby uzyskać ten sam wynik: Utwórz układ dla StatusBar status_bar.xml
Zwróć uwagę na atrybuty wysokości i wysokości, zostaną one ustawione w wartościach, wartości -19, wartości-21 poniżej.
Dodaj ten układ do układu działań za pomocą include, main_activity.xml:
Dla paska narzędzi dodaj atrybut górnego marginesu:
W swoim appTheme style-v19.xml i styles-v21.xml dodaj windowTranslucent attr:
styles-v19.xml, v21:
I na koniec na dimens, dimens-v19, dimens-v21, dodaj wartości dla paska narzędzi topMargin i wysokości statusBarHeight: dimens.xml dla mniej niż KitKat:
Wysokość paska stanu wynosi zawsze 24dp dimens-v19.xml dla KitKat i wyższych:
dimens-v21.xml dla Lolipop, w razie potrzeby po prostu dodaj rzędną:
Oto wynik dla Jellybean KitKat i Lollipop:
źródło
Możesz użyć tego prostego kodu:
One-liner w Kotlin:
Oryginalna odpowiedź przy sprawdzaniu wersji Java i ręcznej:
źródło
ContextCompat
. W Kotlinie jest to po prostu:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Po prostu utwórz nowy motyw w res / wartości / styles.xml, w którym zmienisz „colorPrimaryDark”, który jest kolorem paska stanu:
I zmodyfikuj motyw aktywności w AndroidManifest.xml do tego, który chcesz, w następnym ćwiczeniu możesz zmienić kolor z powrotem na oryginalny, wybierając oryginalny motyw:
Tak powinien wyglądać plik res / wartości / kolory.xml :
źródło
Aby zmienić kolor powyższego Lolipopa, po prostu dodaj go do pliku styles.xml
ale pamiętaj , jeśli chcesz mieć jasny kolor paska stanu, dodaj również ten wiersz
źródło
Za pomocą tej funkcji można zmienić kolor paska stanu. działa na Androidzie L oznacza API 21 i wyższy i wymaga ciągów kolorów, takich jak
"#ffffff"
.źródło
Miałem ten wymóg: programowo zmienić kolor paska stanu, utrzymując go przezroczystym , aby umożliwić szufladzie nawigacji nałożenie się na siebie przez pasek stanu.
Nie mogę tego zrobić za pomocą interfejsu API
Jeśli zaznaczysz tutaj w przepełnieniu stosu, wszyscy przed tym wierszem kodu ustaw przezroczystość paska stanu na ciągłą
Jestem w stanie zarządzać kolorem i przezroczystością paska stanu w następujący sposób:
Android 4: niewiele możesz zrobić, ponieważ nie możesz zarządzać kolorem paska stanu z interfejsu API ... jedyne, co możesz zrobić, to ustawić pasek stanu jako półprzezroczysty i przesunąć kolorowy element interfejsu użytkownika pod stan bar. Aby to zrobić, musisz grać
w twoim głównym układzie. Pozwala to narysować układ pod paskiem stanu. Następnie musisz zagrać z wypełnieniem u góry głównego układu.
Android 5 i nowszy: musisz zdefiniować styl
dzięki temu szuflada nawigacji może nachodzić na pasek stanu.
Następnie, aby zmienić kolor przy zachowaniu przezroczystości paska stanu, należy ustawić kolor paska stanu za pomocą
gdzie drawerLayout jest zdefiniowany w ten sposób
źródło
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
. W każdym razie po wielu dniach poszukiwań znalazłem coś, co naprawdę działa (na razie testowane tylko na Lolllipop). DziękiZmodyfikuj colorPrimary w pliku colors.xml w polu Wartości na kolor, który ma być na pasku stanu. Na przykład:
źródło
Aby zmienić kolor paska stanu, przejdź do
res/values-v21/styles.xml
i kolor paska stanuźródło
Jeśli chcesz programowo zmienić kolor paska stanu (i pod warunkiem, że urządzenie ma system Android 5.0). Jest to prosty sposób na zmianę statusuBarColor z dowolnej Aktywności i bardzo łatwe metody, gdy różne fragmenty mają inny kolor paska stanu.
źródło
Jeśli chcesz pracować na Androidzie 4.4 i nowszych, spróbuj tego. Odnoszę się do odpowiedzi Harpreeta i tego linku. Android i przezroczysty pasek stanu
Najpierw wywołaj metodę setStatusBarColored w metodzie onCreate działania (umieściłem ją w klasie util). Używam tutaj obrazu, możesz go zmienić, aby użyć koloru.
Przed:
Po:
Kolor paska stanu został zmieniony, ale pasek nawigacyjny jest obcięty, dlatego musimy ustawić margines lub przesunięcie paska nawigacyjnego w metodzie onCreate.
Następnie pasek stanu będzie wyglądał tak.
źródło
To działało dla mnie w KitKat i z dobrymi wynikami.
źródło
Jeszcze jedno rozwiązanie:
źródło
zmień colorPrimaryDark na pożądany kolor w pliku res / wartości / styles.xml
źródło