Jak zmienić kolor paska stanu w Androidzie?

427

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

wprowadź opis zdjęcia tutaj

codercat
źródło
2
jest to możliwe dopiero po KitKat @MarkBuikema
codercat
4
Jak sugeruje Niels, istnieje atrybut TEMATU od czasu wywołania v21 android:statusBarColor. Możesz to po prostu dodać values-v21/styles.xml.
Levite
@MarkBuikema Jak to w ogóle związane z dostępem do roota!
steve moretz

Odpowiedzi:

624

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

wprowadź opis zdjęcia tutaj

Przeczytaj więcej na temat motywu materiałowego na oficjalnej stronie programistów Androida

Giorgio
źródło
29
z jakiegoś powodu atrybut colorPrimaryDark nie działa dla mnie. Próbowałem na emulatora V21
dewiacyjnych
3
Działa, musisz zobaczyć zmiany w emulatorze, a nie w podglądzie układu [tam go nie pokazuje]
Mightian,
6
colorPrimaryDark nie działa dla mnie na emulatorze API 18. Z artykułu na temat appcompat: „Na starszych platformach AppCompat emuluje motywy kolorystyczne tam, gdzie to możliwe. Obecnie ogranicza się to do kolorowania paska akcji i niektórych widżetów”.
Adam Johns
12
Co powiesz na zmianę koloru czcionki na pasku stanu? Dokumenty nic o tym nie mówią.
Scott Biggs,
Próbowałem w ten sam sposób. działa idealnie na większości wszystkich urządzeń, ale mam Samsung Galaxy S4 z systemem OS 5.0.1 i na tym pasku stanu telefonu jest czarny. A kiedy przejdę do innej aktywności i powrócę do poprzedniej aktywności, kolor paska stanu zmieni się na kolor motywu aplikacji. Jakikolwiek powód, dla którego tak się dzieje
Hitesh Kamani,
364

Aktualizacja:

Lizak:

public abstract void setStatusBarColor (int color)

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.setStatusBarColormetody wprowadzonej w API level 21.

Zmiana koloru paska stanu wymaga również ustawienia dwóch dodatkowych flag w oknie; musisz dodać FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDSflagę i wyczyścićFLAG_TRANSLUCENT_STATUS flagę.

Kod roboczy:

import android.view.Window;

...

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

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!

wprowadź opis zdjęcia tutaj

transitionNameNa tle widok będzie android:status:background.

codercat
źródło
2
Jakieś rozwiązanie dla kompatybilności wstecznej?
Adam Hurwitz
Jak zauważono w odpowiedzi Nielsa: możesz również skonfigurować kolor paska stanu za pomocą motywu / stylu, ustawiając android:statusBarColorw swoim values-v21/styles.xmlpliku na androiddocs.com/training/material/theme.html w podobny sposób<item name="android:statusBarColor">@color/primary_color</item>
JL West
4
mogę zmienić kolor paska stanu na biały, ale nie widzę ikony powiadomienia, np. baterii, jak mogę to rozwiązać?
MNFS
1
nie masz pojęcia, jak bardzo mi pomogłeś ..
Abhishek Dhyani
222

Umieść to swoje wartości-v21 / styles.xml, aby włączyć to w Lollipop:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>
Niels
źródło
34
wymaga to min. API 21
Rzym.
49
Prawdopodobnie dlatego zasugerował, aby umieścić go w wartości-v21 / styles.xml ;-) Wydaje się, że jest to jak dotąd najdokładniejsza odpowiedź !!
Levite,
Ale to wciąż oznacza ostrzeżenie !!?
Nihal Sharma
Jaka jest funkcja Compa? pasek stanu
blackHawk
możesz dodać targeApiatrybut, jeśli chcesz zachować pojedynczy plik stylu. Przeczytaj moją odpowiedź w celach informacyjnych stackoverflow.com/a/48565459/4291272
Faisal Shaikh
50

jest 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:

  1. w moim xml dodałem do góry ten widok:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

potem zrobiłem tę metodę:

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

potrzebujesz również tych dwóch metod, aby uzyskać działanie Pasek i wysokość paska stanu:

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

jedyną rzeczą, której potrzebujesz, jest ta linia, aby ustawić kolor paska stanu:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
itzhar
źródło
1
gdzie powinienem umieścić element widoku? powinien znajdować się na głównym układzie?
Emil Reña Enriquez
Tak. W twoim xml. Na samym początku.
itzhar
Uwaga: Działa tylko dla Androida> = 19 API. W moim przypadku potrzebuję wsparcia od 16
Anton Kizema
setStatusBarColor (findViewById (android.R.id.statusBarBackground), getResources (). getColor (android.R.color.white));
AndroidLad
34

Jak powiedział @Niels, musisz umieścić w wartości-v21 / styles.xml:

<item name="android:statusBarColor">@color/black</item>

Ale dodaj, tools:targetApi="lollipop"jeśli chcesz single styles.xml, na przykład:

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/black</item>
Faisal Shaikh
źródło
3
Dziękujemy za „targetApi”. Nie lubię, gdy mój motyw jest rozłożony na wiele plików. :)
splot
31

Cóż, rozwiązanie Izhar było w porządku, ale osobiście staram się unikać kodu, który wygląda następująco:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};

Nie lubię też powielać kodu. W twojej odpowiedzi muszę dodać taki wiersz kodu we wszystkich działaniach:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

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

<View xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="@dimen/statusBarHeight"
     android:background="@color/primaryColorDark"
     android:elevation="@dimen/statusBarElevation">

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:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >

<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout       
</RelativeLayout>

Dla paska narzędzi dodaj atrybut górnego marginesu:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">

W swoim appTheme style-v19.xml i styles-v21.xml dodaj windowTranslucent attr:

styles-v19.xml, v21:

<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>

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:

<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>

Wysokość paska stanu wynosi zawsze 24dp dimens-v19.xml dla KitKat i wyższych:

<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>

dimens-v21.xml dla Lolipop, w razie potrzeby po prostu dodaj rzędną:

<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>

Oto wynik dla Jellybean KitKat i Lollipop:

wprowadź opis zdjęcia tutaj

Moti Bartow
źródło
Zamiast wstawiać kod sprawdzający, umieściłeś go w XML. Twoje rozwiązanie będzie działać na Kitkacie, tak jak on.
deweloper Androida
26

Możesz użyć tego prostego kodu:

One-liner w Kotlin:

window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)

Oryginalna odpowiedź przy sprawdzaniu wersji Java i ręcznej:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}
Steve Moretz
źródło
Możesz to dodatkowo uprościć, używając ContextCompat. W Kotlinie jest to po prostu:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
sunadorer
Do czasu, kiedy to napisałem, nie próbowałem kotlin. Dlaczego nie edytujesz odpowiedzi i mogę ją zatwierdzić :)
Steve Moretz
Dobry pomysł.
Zawarłem tę
kolor paska stanu zmienił się powyżej Build.VERSION_CODES.M. nie działa poniżej Lollipopa
Muhammed Haris
@MuhammedHaris to działa. Czy używałeś kodu kotlin lub java?
steve moretz
23

Po prostu utwórz nowy motyw w res / wartości / styles.xml, w którym zmienisz „colorPrimaryDark”, który jest kolorem paska stanu:

<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/colorGray</item>
</style>

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:

<activity
    android:name=".LoginActivity"
    android:theme="@style/AppTheme.GrayStatusBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Tak powinien wyglądać plik res / wartości / kolory.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#c6d6f0</color>
    <color name="colorGray">#757575</color>
</resources>
porównać
źródło
1
Myślę, że to najprostsze, ale najczystsze rozwiązanie. Nie trzeba mieć minimalnego poziomu API 21 , wystarczy proste zastąpienie. Zasługuje na więcej głosów.
tahsinRupam
To nie działało, gdy działałem na Nougat i ustawiono poziom interfejsu API na 19. Działa, jeśli ustawię Android: theme w węźle aplikacji w manifeście.
AndroidDev
18

Aby zmienić kolor powyższego Lolipopa, po prostu dodaj go do pliku styles.xml

<item name="android:statusBarColor">@color/statusBarColor</item>

ale pamiętaj , jeśli chcesz mieć jasny kolor paska stanu, dodaj również ten wiersz

<item name="android:windowLightStatusBar">true</item>
Amin Keshavarzian
źródło
1
Dzięki, to też przydatna odpowiedź.
Andrew Grow
16

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".

private void changeStatusBarColor(String color){
    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.parseColor(color));
    }
}
sajad abbasi
źródło
15

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

getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)

Jeśli zaznaczysz tutaj w przepełnieniu stosu, wszyscy przed tym wierszem kodu ustaw przezroczystość paska stanu na ciągłą

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

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ć

    android:fitsSystemWindows="false"

    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

    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>

    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ą

    drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))

    gdzie drawerLayout jest zdefiniowany w ten sposób

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
DSoldo
źródło
Bez mnie to działał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ęki
DenisGL
miałem ten sam problem, a twoja odpowiedź pomogła mi rozwiązać ten problem.
A.Gun,
7

Zmodyfikuj colorPrimary w pliku colors.xml w polu Wartości na kolor, który ma być na pasku stanu. Na przykład:

   <resources>
<color name="colorPrimary">#800000</color> // changes the status bar color to Burgundy
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>

PhilipS
źródło
7

Aby zmienić kolor paska stanu, przejdź do res/values-v21/styles.xmli kolor paska stanu

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">#0000FF</item>
    </style>
</resources>
moc radhason
źródło
Hej, możesz mi pomóc? Nie mam pojęcia o Androidzie i nie mogę teraz zacząć się uczyć. Mam prostą aplikację, która uruchamia plik HTML. Umieram, by zmienić kolor paska stanu, ponieważ ta górna i dolna część # 000 jest dla mojej palety okropna. Ale po prostu nie mogę, nie mogę nawet znaleźć pliku styles.xml ... Gdybym mógł wysłać ci mój apk, a ty mi go ustawisz, będę bardzo wdzięczny!
Thiago Soubra
6

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.

 /**
 * @param colorId id of color
 * @param isStatusBarFontDark Light or Dark color
 */
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = ContextCompat.getColor(this, colorId)
        setSystemBarTheme(isStatusBarFontDark)
    }
}

/** Changes the System Bar Theme.  */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
    // Fetch the current flags.
    val lFlags = window.decorView.systemUiVisibility
    // Update the SystemUiVisibility depending on whether we want a Light or Dark theme.
    window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
Nabin
źródło
5

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.

public static void setStatusBarColored(Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        Window w = context.getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        int statusBarHeight = getStatusBarHeight(context);

        View view = new View(context);
        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        view.getLayoutParams().height = statusBarHeight;
        ((ViewGroup) w.getDecorView()).addView(view);
        view.setBackground(context.getResources().getDrawable(R.drawable.navibg));
    }
}

public static int getStatusBarHeight(Activity context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

Przed: przed

Po: po

Kolor paska stanu został zmieniony, ale pasek nawigacyjny jest obcięty, dlatego musimy ustawić margines lub przesunięcie paska nawigacyjnego w metodzie onCreate.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height)));
        layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0);

        this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams);
    }

Następnie pasek stanu będzie wyglądał tak.

pasek stanu

Allan
źródło
4

To działało dla mnie w KitKat i z dobrymi wynikami.

public static void setTaskBarColored(Activity context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            Window w = context.getWindow();
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //status bar height
            int statusBarHeight = Utilities.getStatusBarHeight(context);

            View view = new View(context);
            view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            view.getLayoutParams().height = statusBarHeight;
            ((ViewGroup) w.getDecorView()).addView(view);
            view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
        }
    }
Harpreet
źródło
2

Jeszcze jedno rozwiązanie:

final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);
Vova K.
źródło
Czy to zadziała na tabletach, gdzie pasek stanu znajduje się na dole ekranu?
guy.gc
6
co tu jest „w” i „UiUtil”?
Manav Patadia
2

zmień colorPrimaryDark na pożądany kolor w pliku res / wartości / styles.xml

    <resources>
        <color name="colorPrimary">#800000</color>
        <color name="colorPrimaryDark">#303F9F</color> //This Line
        <color name="colorAccent">#FF4081</color>
        <color name="red">#FF0000</color>
        <color name="white">#FFFFFF</color>
       <color name="cream">#fffdd0</color>
       <color name="burgundy">#800000</color>
    </resources>
Engr Syed Rowshan Ali
źródło