Jak zmienić kolor paska stanu w systemie Android?

Po pierwsze 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 nawigacji.

Chcę, aby kolor paska stanu był taki sam jak kolor paska nawigacji

Tutaj wpisz opis obrazka

Author: Jonik, 2014-03-05

21 answers

Android 5.0 Lollipop wprowadził motyw projektu materiału, który automatycznie koloruje pasek stanu na podstawie wartości colorPrimaryDark motywu.

Jest to obsługiwane na urządzeniu pre-lollipop dzięki bibliotece support-v7-appcompat począwszy od wersji 21. blog o AppCompat wsparcia v21 od Chris Banes

Tutaj wpisz opis obrazka

Przeczytaj więcej na temat materiału na oficjalnej stronie deweloperów Androida

 686
Author: Giorgio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-10 07:04:02

Aktualizacja:

Lizak:

public abstract void setStatusBarColor (int color)

Dodany w API poziom 21

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 metody window.setStatusBarColor wprowadzonej w API level 21.

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

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));

Offcial developer reference: setStatusBarColor (int)

Przykład: material-design-everywhere

Chris Banes Blog-appcompat v21: material design for pre-Lollipop devices!

Tutaj wpisz opis obrazka

transitionName dla tła widoku będzie android:status:background.

 394
Author: codercat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-26 07:45:34

Place to jest twoja wartość-V21 / styles.xml, aby włączyć to na 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>
 243
Author: Niels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-14 10:20:11

Jest to bardzo łatwy sposób, aby to zrobić bez żadnej Biblioteki: jeśli wersja systemu operacyjnego nie jest obsługiwana-pod 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ć pasek akcji 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;
}

Wtedy jedyne, czego potrzebujesz, to ta linia, aby ustawić kolor paska stanu:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
 50
Author: itzhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-06 12:37:26

Dla Programistów Java:

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

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

Ale dodaj tools:targetApi="lollipop" Jeśli chcesz pojedyncze style.xml, jak:

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

Dla Programistów Kotlina:

window.statusBarColor = ContextCompat.getColor(this, R.color.color_name)
 40
Author: Faisal Shaikh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-22 09:55:11

Możesz użyć tego prostego kodu:

Jednowierszowe w Kotlinie:

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

Oryginalna odpowiedź z Java & manual version check:

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));
}
 36
Author: steve moretz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-21 20:22:15

Cóż, rozwiązanie Izhar było OK, ale, osobiście staram się unikać z kodu, który wygląda tak:

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

Również nie lubię powielać kodu. W twojej odpowiedzi muszę dodać taką linijkę kodu we wszystkich czynnościach:

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: Tworzy układ dla paska stanu 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 values, values-v19, values-v21 dalej.

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 top margin:

<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 Twoim stylu appTheme-v19.xml i style-v21.xml, dodaj windowTranslucent attr:

Style-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ść paska stanu: dimens.xml za mniej niż KitKat:

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

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

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

Dimens-v21.xml dla Lolipop, wystarczy dodać elewację w razie potrzeby:

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

Oto wynik dla Jellybean KitKat i Lollipop:

Tutaj wpisz opis obrazka

 31
Author: Moti Bartov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-15 18:41:37

Aby zmienić kolor dla powyższego lolipop wystarczy dodać go do swoich styli.xml

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

Ale pamiętaj, Jeśli chcesz mieć jasny kolor paska stanu, Dodaj również tę linię

<item name="android:windowLightStatusBar">true</item>
 31
Author: Amin Keshavarzian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-29 07:05:32

Po prostu utwórz nowy motyw w res / values / styles.xml gdzie zmieniasz "colorPrimaryDark", który jest kolorem paska stanu:

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

I zmodyfikować motyw aktywności w AndroidManifest.xml do tego, który chcesz, przy następnej aktywności 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>

Oto jak twoje res / wartości/kolory.xml powinien wyglądać następująco:

<?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>
 23
Author: lcompare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 11:17:36

Możesz zmienić kolor paska stanu za pomocą tej funkcji. działa na Androidzie L oznacza API 21 i wyższe i wymaga kolorowego ciągu, takiego 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));
    }
}
 17
Author: sajad abbasi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 22:55:36

Miałem taki wymóg: zmieniając programowo kolor paska stanu zachowując jego przezroczystość , aby Szuflada nawigacyjna mogła rysować się nakładając się na pasek stanu trasparent.

Nie mogę tego zrobić używając API

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

Jeśli zaznaczysz tutaj w stack overflow wszyscy przed tą linią kodu Ustaw przezroczystość paska stanu na solid z

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

Jestem w stanie zarządzać kolorem i przezroczystością paska stanu jak to:

  • Android 4: niewiele możesz zrobić, ponieważ nie możesz zarządzać kolorem paska stanu za pomocą interfejsu API ... jedyne, co możesz zrobić, to ustawić pasek stanu jako półprzezroczysty i przenieść kolorowy element interfejsu użytkownika pod pasek stanu. Aby to zrobić, musisz grać z

    android:fitsSystemWindows="false"
    

    W Twoim głównym układzie. Pozwala to na narysowanie układu pod paskiem stanu. Następnie musisz zagrać z wypełnieniem z góry głównego układu.

  • Android 5 i powyżej: musisz zdefiniować styl za pomocą

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

    Pozwala to szufladzie nawigacyjnej nakładać się na pasek stanu.

    Następnie, aby zmienić kolor, aby pasek stanu był przezroczysty, musisz ustawić kolor paska stanu za pomocą

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

    Gdzie drawerLayout jest zdefiniowany tak

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    
 15
Author: DSoldo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 08:20:05

Aby zmienić kolor paska stanu przejdź do res/values-v21/styles.xml oraz 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>
 14
Author: ranojan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-30 20:54:47

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ę statusBarColor z dowolnej aktywności i bardzo proste 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
}
 10
Author: Nabin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-21 16:28:20

Edytuj kolorprimary w kolorach.xml w wartościach do koloru, który ma być paskiem 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>

 7
Author: PhilipS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-06 10:18:13

Jeśli chcesz pracować na Androidzie 4.4 i nowszym, spróbuj tego. Odsyłam do odpowiedzi Harpreeta i tego linku. Android i przezroczysty pasek stanu

Najpierw wywołaj metodę setStatusBarColored w metodzie OnCreate Activity(umieściłem ją w klasie util). Używam obrazu tutaj, można 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 navi jest odcięty, więc musimy ustawia margines lub offset paska navi 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);
    }

Wtedy pasek stanu będzie wyglądał tak.

pasek stanu

 6
Author: Allan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-17 02:15:32

Rozwiązanie jest bardzo proste, umieść następujące linie w swoim stylu.xml

Dla trybu ciemnego:

<item name="android:windowLightStatusBar">false</item>
<item name="android:statusBarColor">@color/black</item>
 5
Author: Sophia Gray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-23 13:40:30

To jest to, co 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));
        }
    }
 4
Author: Harpreet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-20 19:23:20

Zmień colorPrimaryDark na pożądany kolor w res / values / styles.plik 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>
 3
Author: Engr Syed Rowshan Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-27 18:47:09

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);
 2
Author: Vova K.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-27 17:38:50

Jeśli chcesz ustawić niestandardowy plik rysowalny użyj tego fragmentu kodu

fun setCustomStatusBar(){
    if (Build.VERSION.SDK_INT >= 21) {
        val decor = window.decorView
        decor.viewTreeObserver.addOnPreDrawListener(object :
            ViewTreeObserver.OnPreDrawListener {
            override fun onPreDraw(): Boolean {
                decor.viewTreeObserver.removeOnPreDrawListener(this)
                val statusBar = decor.findViewById<View> 
                  (android.R.id.statusBarBackground)
                statusBar.setBackgroundResource(R.drawable.bg_statusbar)
                return true
            }
        })
    }
}
 1
Author: Ahmet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-08 10:22:29

Użyłem tego kodu, aby zmienić pasek stanu na przezroczysty

    activity?.window?.setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    )

Aby zmienić go na kolor w stylu użyj tego kodu użyłem fragmentu w onDetach ()

activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
 0
Author: Hamdy Abd El Fattah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-06 10:16:10